Я объявил список фиксированной длины (длина - динамический 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";
}
Но тогда метод сборки перестраивается несколько раз, и длина списка снова инициализируется, в результате чего в списке появляются нулевые значения.
Есть ли другой подход ?? или как бы я справился с восстановлением списка ??
Заранее спасибо