Как вызвать поставщика как Future в FutureBuilder?

#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 .