Невозможно установить значение в списке фиксированной длины в dart / Flutter, так как список перестраивается несколько раз - PullRequest
0 голосов
/ 07 мая 2020

Я объявил список фиксированной длины (длина - динамический c), поэтому длина списка инициализируется в streamBuilder.

List<String> users;

Длина списка - динамический c, поэтому я должен инициализировать длину в streamBuilder (или есть другой подход /?)

  @override
  Widget build(BuildContext context) {

    return  Scaffold(
        appBar: AppBar(
          title: FittedBox(child: Text("${widget.appbarTitle}")),
        ),
        body: StreamBuilder(
                stream: user.getUser,
                builder:
                    (context, AsyncSnapshot<UserModel> snapshot) {
                  if (snapshot.hasData) {

                    int userCount=
                          snapshot.data.results[0].users.length;
                      particulars = List<String>(userCount);

                    return _userList(context, snapshot);

                  } else if (snapshot.hasError) {
                    return Center(child: Text(snapshot.error.toString()));
                  } else {
                    return Center(
                      child: Container(
                        height: 45.0,
                        width: 45.0,
                        child: CircularProgressIndicator(),
                      ),
                    );
                  }
                }),
        key: _scaffoldKey,
      );
  }

и я сохраняю значение в списке>

_userList(BuildContext context, AsyncSnapshot<UserModel> snapshot){

users[2] = "StringValue";

}

Но тогда метод сборки перестраивается несколько раз, и длина списка снова инициализируется, в результате чего в списке появляются нулевые значения.

Есть ли другой подход ?? или как бы я справился с восстановлением списка ??

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...