Flutter FutureBuilder가 업데이트되지 않음

Sep 04 2020

나는 이미 비슷한 질문이 있다는 것을 알고 있지만 그 대답으로 실제로 내 질문을 해결할 수 없었습니다. 그래서 데이터가로드 될 때 업데이트되지 않는 FutureBuilder가 있는데 그 이유를 알 수 없습니다. 내가 이해하는 방식으로, 2 초 지연 후 위젯을 다시 빌드해야합니다 ( "Data Arrived"가 인쇄되어야 함). 왜 이런 일이 일어나지 않습니까?

import 'package:flutter/material.dart';

class NewQRPage extends StatefulWidget {
  @override
  _NewQRPageState createState() => _NewQRPageState();
}


class _NewQRPageState extends State<NewQRPage> {

Future link;

@override
void initState() {
  link = getLink();
  super.initState();
}

getLink() async{

  Future.delayed(Duration(milliseconds: 2000),(){
    print("Data Returned");
    return "hello";
  });

}

@override
Widget build(BuildContext context) {
  return Container(
    child: FutureBuilder(
    future: link,
    builder: (context, snapshot) {

      if(snapshot.hasData){
        print("Data Arrived");
        return Text(snapshot.data);
      }
      else if(snapshot.hasError){
        print("Error");
        return Text("Error");
      }
      else {
        print("No Data");
        return Text("No Data");
      }

    },
  ),
);
}
}

콘솔 출력은 다음과 같습니다.

Performing hot restart...
Syncing files to device LYA L29...
Restarted application in 1.044ms.
I/flutter (22206): onStartCalled
I/flutter (22206): No Data
I/flutter (22206): No Data
I/flutter (22206): No Data
I/flutter (22206): Data Returned

답변

2 Zeus Sep 04 2020 at 21:22

당신은 "Hello"당신의 lamda ie로 돌아 오지 말아야합니다(){}

시험

Future<String> getLink() async{
  await Future.delayed(Duration(milliseconds: 2000));
  print("Data Returned");
  return "hello";
}