Я заблудился в управлении потоковым компоновщиком ... помогите, пожалуйста!
У меня есть замечательный класс, который получает данные из firestore и представляет их в виде списка. Поток включает переменную (rag
), которая может изменяться в зависимости от взаимодействия с пользователем, и я хотел бы, чтобы поток обновлялся при изменении такой переменной. Я не могу заставить его работать, и я считаю, что моя проблема в том, что я не могу обновить поток. Как я могу обновить мой поток? В iOS есть простая строка reloadData для этого ...
См. Ниже мой код
class RestaurantList extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: _firestore
.collection('restaurants')
.where('lat', isGreaterThan: appData.currentLatitude - rag)
.where('lat', isLessThan: appData.currentLatitude + rag)
.snapshots(),
builder: (context, snapshot) {
if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting:
return Center(
child: new Text(
'Loading...',
),
);
default:
final restDB = snapshot.data.documents;
for (var rest in restDB) {
final restID = rest.documentID;
final name = rest.data['name'];
final lati = rest.data['lat'];
final longi = rest.data['lon'];
final distance = (appData.currentLatitude - lati) *
(appData.currentLatitude - lati) +
(appData.currentLongitude - longi) *
(appData.currentLongitude - longi);
if (longi < appData.currentLongitude + rag &&
longi > appData.currentLongitude - rag) {
final restaurant = Restaurant(
restID: restID,
name: name,
distance: distance,
lati: lati,
longi: longi,
);
restaurants.add(restaurant);
}
}
return ListView(
shrinkWrap: true,
physics: ClampingScrollPhysics(),
children: restaurants,
);
}
},
);
}
}