#api #flutter #flutter-layout
#API #флаттер #flutter-layout
Вопрос:
Я пытаюсь вызвать поставщика в моем FutureBuilder
, как показано ниже:
initState() {
setState(() {
tankProvider = Provider.of<TankDataProvider>(context, listen: false);
_data = tankProvider.getTankData(context);
});
// tankInfo = Provider.of<TankInfoProvider>(context, listen: false);
// tankInfo.getTankInfo(context);
Services.fetchInfo().then((tankInfos){
setState(() {
tankInfo = tankInfos;
});
});
super.initState();
}
Widget build(BuildContext context) {
final ping = Provider.of<TankPingProvider>(context);
return FutureBuilder<Map<String, Tank>>(
future: Services.fetchData(),
builder: (context, snapshot){
Но я получаю сообщение об ошибке, как показано ниже:
The argument type 'TankPingProvider' can't be assigned to the parameter type 'Future<Map<String, Tank>>'.
Могу ли я в любом случае удалить эту ошибку и использовать provider как future в FutureBuilder?
Комментарии:
1.
Future.value(somethingYouWantAsAFuture)
2. Вам никогда не понадобится setState внутри initState. В конце initState вы все равно собираетесь вызвать build.
3. Похоже, вы это не исправили. «Услуги. fetchData()». Нет, это не относится к вашему FutureBuilder. Будущее , которое это возвращает, должно быть помещено в переменную в вашем initState, а затем эта переменная должна использоваться для «future: someVar».
4. Привет всем. Спасибо за комментарий. Спасибо @RandalSchwartz за ответ. Есть ли статья, которой вы можете поделиться о вызове setState? Поскольку вы говорите, что мне не нужно вызывать setState внутри initState, поэтому я хочу прочитать об этом, потому что я все еще новичок в flutter
5. Не уверен, как я это узнал… Я так много читал за последние много лет. 😉 Но эти документы стоит прочитать: api.flutter.dev/flutter/widgets/State/setState.html и api.flutter.dev/flutter/widgets/State-class.html .