需要了解何时应该阻塞模式和阻塞的生命周期(如何释放保存内存的对象)
我有一个屏幕,从服务器获取数据,数据将仅用于一个屏幕。我使用块模式来显示数据。
当使用块模式时,我有一个屏幕,其中我使用的是Statelesswidget。我正在试图处理“willPopScope”上的流。一旦释放,流就不能再使用。因为访问同一个屏幕会导致崩溃,因为我用块包装了我的材料应用程序。
-
创建了流
final _leaderBoardList = StreamController<List<dynamic>>.broadcast();
-
处理流
dispose() {
print('_leaderBoardList disposed');
_leaderBoardList.close();
}
-
供应商内的包装材料应用程序:
LeaderBoardProvider(
child: MaterialApp(
title: 'Table View Fetch',
theme: ThemeData(
primarySwatch: Colors.teal,
),
home: HomeScreen(),
),
);
-
statelesswidget“willpopscope”,我已经对代码的处置进行了注释,因为正如我所理解的,当前块是创建一次的:
Widget build(BuildContext context) {
print(' ListView fetch Build called');
final bloc = LeaderBoardProvider.of(context);
bloc.fetchLeaderBoards();
return WillPopScope(
onWillPop: () async {
//bloc.dispose();
return true;
},
child: bodyStack(context, bloc),
);
}
第一个问题
,假设我创建了一个广播流并删除了“willPopScope”中的释放代码,那么一切都将按预期工作,但我认为,这样,我的块就为应用程序的生存期保留了内存。
第二个问题
,如何处理在屏幕中使用数据的情况。对于这种情况,是否建议使用布洛克模式?