J'ai une application eCommerce dans laquelle je charge plusieurs widgets qui utilise leur propre avenir pour la construire. J'ai 6 widgets à Singlechechildscrollview. Le problème est que je vois 6 circulairesProgressindicator qui a l'air très mauvais.
Comment puis-je vérifier si le widget à l'intérieur de SingLechechildScrollView a construit et instate vers _isloading = false; p> class Banner1Slot extends StatefulWidget {
@override
_TopCategoriesListState createState() => _TopCategoriesListState();
}
class _TopCategoriesListState extends State<Banner1Slot> {
@override
Widget build(BuildContext context) {
return FutureBuilder<List<Banner1>>(
future: getBanner1(http.Client()),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData
? Banner1Image(
banner1: snapshot.data,
)
: Center(
child: CircularProgressIndicator(
backgroundColor: Colors.black26,
),
);
},
);
}
}
3 Réponses :
Qu'en est-il d'avoir un auditeur qui écoute tous les isloadingwidget dans les widgets et et et? ischarger = ischargerwidget1 && ischargewidget2 ... code> p>
J'ai juste besoin de 1 ischarge. Il y a beaucoup de widgets à l'intérieur de l'écran d'accueil et je souhaite vérifier si 1 du widget est construit, puis sur la base à False
Vous pouvez ajouter une valeur isloadingwidget à chacun d'eux. Ensuite, écoutez les thèses "ischargerwidget" et en utilisant le fonctionnement et l'utilisation si l'une d'entre elles est prête, vous obtiendrez une fausse valeur pour la création de loisirs. J'ai édité ma réponse selon ce commentaire.
u besoin d'utiliser ChangenotifierProvider pour mieux gérer la circulaireProgressIndicator et appelez NOTINICERLISTENER POUR SETSTE Votre mise en page P>
Essayez Utiliser @override
Widget build(BuildContext context) {
return Scaffold(
body: _isLoading
? Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Center(child: CircularProgressIndicator()))
: SingleChildScrollView(
child: Column(
children: <Widget>[
CarouselSliderList(),
Banner1Slot((){
setState(){
_isLoading = false;
};
}),
TopCategoriesList(),
HotProducts(),
TopCategoriesIconList(),
AllProduct(),
],
),
),
);
}