Bagaimana cara memperbarui status widget dari widget lain di Flutter menggunakan global Key?
Saya memiliki layar widget utama yang berisi dua widget utama Header (ditandai dengan warna merah) dan daftar (ditandai dengan ungu)
berikut adalah kode saya untuk itu:
class ScreenClient extends StatefulWidget {
_ClientState createState() => _ClientState();
}
class _ClientState extends State<ScreenClient> {
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
ClientHeader(), // this is my header widget red
Expanded(
child: ClientList(), // this is my list widget purple
),
],
);
}
}
widget tajuk memiliki tiga opsi seperti yang Anda lihat Tous Bloquédan ayant Retard, yang saya coba capai adalah meneruskan nilai opsi yang diklik ke widget daftar yang ditandai dengan ungu (karena opsi tersebut adalah filter dan elemen daftar harus ditampilkan berdasarkan opsi yang dipilih)
Saya kesulitan memahami paket manajemen status dan dari apa yang saya pahami Global Keysdapat melakukan triknya, tetapi Bagaimana caranya? . berikut adalah kode widget tajuk saya:
class ClientHeader extends StatefulWidget {
_HeaderClientState createState() => _HeaderClientState();
}
class _HeaderClientState extends State<ClientHeader> {
String nomSituation;
String option = "Tous";
@override
Widget build(BuildContext context) {
return Container(
child: Row(
children: <Widget>[
GestureDetector(
child: Text(
"Tous",
style: TextStyle(
color: option == "Tous" ? Colors.white : Colors.grey[400],
),
),
onTap: () {
setState(() {
option = "Tous";
});
},
),
GestureDetector(
child: Text(
"Bloqué",
style: TextStyle(
color: option == "Bloqué" ? Colors.white : Colors.grey[400],
),
),
onTap: () {
setState(() {
option = "Bloqué";
//add send value to ClientList widet ?
});
},
),
GestureDetector(
child: Text(
"Ayant Retard",
style: TextStyle(
color:
option == "Ayant Retard" ? Colors.white : Colors.grey[400],
),
),
onTap: () {
setState(() {
option = "Ayant Retard";
});
},
),
],
),
);
}
}
Jawaban
Saya sarankan Anda dapat menonton 2 contoh di video ini Pragmatis Manajemen Negeri di Flutter (Google I / O'19) tentang state mangement. Video ini sangat membantu saya ketika saya belajar mengepak di awal. Mereka menjelaskan bagaimana mengontrol StatefulWidgetdari yang lain:
- Make state global, controlled by another widget (from 5m30s)
- Use
Provider, which is a very popular solution in Flutter, to control share the value between 2 widgets (from 15m05s)
You you have more time, you can study more fancy state management method like Bloc, MobX (List of state management approaches) or even the advance version of Provider named riverpod just pushish few months ago, which try to resolve some cons when using Provider.