У меня настроен поток, который возвращает идентификатор пользователя. Я передаю это значение в мою модель, которая возвращает поток Firebase.
Потоки возвращают свои значения при создании виджета, но когда я добавляю или удаляю значения с помощью плавающей кнопки действия, виджеты не обновляются.
Если это поможет. Виджет TodaysSummary () - это страница внутри виджета PageView ().
Вот код
class TodaysSummary extends StatefulWidget {
@override
_TodaysSummaryState createState() => _TodaysSummaryState();
}
class _TodaysSummaryState extends State<TodaysSummary> {
@override
Widget build(BuildContext context) {
//provide the user id
final user = Provider.of<User>(context);
return StreamProvider<List<Entry>>(
create: DatabaseService(uid: user.uid).dates,
updateShouldNotify: (_, __) => true,
child:
body: TodaysDataList(),
),
);
}
}
class TodaysDataList extends StatefulWidget {
@override
_TodaysDataListState createState() => _TodaysDataListState();
}
class _TodaysDataListState extends State<TodaysDataList> {
@override
Widget build(BuildContext context) {
final entries = Provider.of<List<Entry>>(context); //this is double code. I added it because I tohught I needed it.
final user = Provider.of<User>(context);
if (entries == null) {
return Scaffold(
body: NoEntryYet(),
);
} else {
return StreamProvider<List<Entry>>.value(
create: (_) => DashboardDatabaseService(uid: user.uid),
updateShouldNotify: (_, __) => true,
child: ListView.builder(
itemCount: entries.length,
itemBuilder: (context,index) {
return EntryTile(entry: entries[index]);
},
),
);
}
}
}
Этот код является потоком в DatabaseService
// Segment of the dashboard database service
Stream<List<Entry>> get dates {
return entryCollection.where('date', isGreaterThanOrEqualTo: today).where('uid', isEqualTo: uid).orderBy('date', descending: true).snapshots()
.map(_todayEntryListFromSnapshot);
}