Więc mam stronę główną z rusztowaniem i odświeżaniem iconbutton. Po naciśnięciu przycisku, chcę ponownie uruchomić przyszłość z MyCustomListView
w przypadku nowych danych.
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
actions: <Widget>[
IconButton(
icon: Icon(Icons.refresh),
onPressed: () {
}),
],
),
body: Padding(
padding: const EdgeInsets.fromLTRB(10, 10, 10, 0),
child:
MyCustomListView()
),
);
}
To jest mój widget {x0}}:
class MyCustomListView extends StatelessWidget {
Future<List<MyData>> getMyData() async {
try {
final response = await http.get(
Uri.encodeFull(
'myurl'),);
if (response.statusCode == 200) {
return MyDataEntity.fromJson(json.decode(response.body)).myData;
}
} catch (e) {
throw Exception(e);
}
}
@override
Widget build(BuildContext context) {
return FutureBuilder<List<MyData>>(
future: getMyData(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return SliverToBoxAdapter(
child: Center(
child: Spinner(),
),
);
} else {
final _myData = snapshot.data;
return SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
},
childCount: _myData == null ? 0 : _myData.length,
),
);
}
},
);
}
}
Jak mogę ponownie uruchomić przyszłość z rodzica w HomePage
? Czy potrzebuję GlobalKey
, innej funkcji i trzeba konwertować widżet do StateFul
?
2 odpowiedzi
Obejście jest tworzenie strony A StatefulWidget , a następnie wywołaj setstate po naciśnięciu przycisku.
Zostanie ponownie ponownie włączyć metodę Budowy, ponownie załadując nowe dane
IconButton(
onPressed: (){
setState((){
});
},
)
Mam nadzieję, że to Ci pomoże.
W tym scenariuszu można użyć zwykłego Buidera Konwertuj na widget statefull i załaduj dane w initstate.
@override
void initState() {
super.initState();
// load data here
// call steState
}
Nie zapomnij uruchomić Setstate in initstate
Podobne pytania
Nowe pytania
flutter
Flutter to zestaw deweloperski oprogramowania UI typu open source stworzony przez Google. Służy do tworzenia aplikacji na Androida, iOS, Linux, Mac, Windows, Google Fuchsia i sieci z jednej bazy kodu. Aplikacje Flutter są napisane w języku Dart.