setState() или markNeedsBuild вызывается во время сборки при установке значения Provider

class UserModel extends ChangeNotifier{

    User _user;
    
    set setuser(User user)
    {
        _user = user;
        notifyListeners();
    }
    
    User get getuser{
        return _user;
    }
}


class UserLoader extends StatelessWidget
{
    final _db= FireStoreService();
    
    @override
    Widget build(BuildContext context) {
      return Scaffold(
        appBar: AppBar(
          title: Text('HomeScreen'),
        ),
        body: FutureBuilder(
            future: _db.getUserDetails()
            builder:(context,futureData){
                if(futureData.state == ConnectionState.done)
                {
                    if(futureData.hasData)
                    {
                        Provider.of<UserModel>.setuser = futureData.data;
                    }
                }
            }
        ),
      );
    }
}

Я знаю, что это происходит из-за Provider.of.setuser = futureData.data; поскольку он снова вызывает функцию сборки, пока функция сборки выполняется. У меня есть альтернативный способ, где я могу установить значения в Provider, но не создавать его специально в тех случаях, когда используется строитель.

0 ответов

Другие вопросы по тегам