Flutter FutureBuilder nie aktualizuje się
Sep 04 2020
Wiem, że jest już podobne pytanie, ale nie mogłem rozwiązać swojego na podstawie odpowiedzi. Mam więc FutureBuilder, który nie aktualizuje się po załadowaniu danych i nie mogę dowiedzieć się, dlaczego. Tak, jak to rozumiem, po 2 sekundach opóźnienia Widget powinien zostać odbudowany (należy wydrukować "Data Arrived"). Dlaczego tak się nie dzieje?
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");
}
},
),
);
}
}
A wyjście konsoli to:
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
Odpowiedzi
2 Zeus Sep 04 2020 at 21:22
Nie powinieneś wracać "Hello"w swojej lamdzie ie(){}
Próbować
Future<String> getLink() async{
await Future.delayed(Duration(milliseconds: 2000));
print("Data Returned");
return "hello";
}