我正在处理诸如对话之类的聊天页面。而且我可以从firebase获取数据流。当我第一次打开页面时,所有数据都来了,但如果新数据添加到firebase,我的ui不会更新。而且当我返回并再次单击以转到对话页面时,新数据即将到来。
我的视图模型功能
Stream<List<Message?>> getSingleConversation(conversationId) async* {
String? userId = await _authRepository.getCurrentUserId();
if (userId != null) {
yield* _conversationRepository.getSingleConversation(
conversationId, userId);
}
}
我的提供商路线
MaterialPageRoute(
builder: (context) => MultiProvider(
providers: [
StreamProvider<List<Message?>>.value(
value: _conversationViewModel.getSingleConversation(chat!.id),
updateShouldNotify: (_, __) => true,
initialData: [],
),
ChangeNotifierProvider.value(value: ConversationViewModel()),
],
child: ConversationPage(
chat: chat,
conversationId: chat.id,
),
),
)
和 ui
List<Message?> viewModelProvider = Provider.of<List<Message?>>(context);
Widget _buildMessagesList(List<Message?> viewModelProvider) {
return ListView(
children: viewModelProvider.map((e) {
return _buildMessageCard(e!);
}).toList());
}