gpt4 book ai didi

Flutter-了解 Provider、Bloc 的生命周期以及何时处理流

转载 作者:IT王子 更新时间:2023-10-29 06:58:53 28 4
gpt4 key购买 nike

<分区>

需要了解什么时候应该Bloc模式和Bloc的生命周期(如何释放持有内存的对象)

我有一个屏幕,我从服务器获取数据,数据将仅用于单个屏幕。我正在使用 Bloc 模式来显示数据。

当使用 Bloc 模式时,我有一个使用 StatelessWidget 的屏幕。我正在尝试处理“WillPopScope”上的流。一旦处理掉,流就不能再使用了。因为访问同一个屏幕会导致崩溃,因为我用 Bloc 包装了我的 MaterialApp。

  1. 创建了一个流
    final _leaderBoardList = StreamController<List<dynamic>>.broadcast();
  1. 配置流
    dispose() {
print('_leaderBoardList disposed');
_leaderBoardList.close();
}
  1. 在提供者中包装 Material App:
    LeaderBoardProvider(
child: MaterialApp(
title: 'Table View Fetch',
theme: ThemeData(
primarySwatch: Colors.teal,
),
home: HomeScreen(),
),
);
  1. Statelesswidget 'WillPopScope',我已经评论了处理代码,因为据我所知,当前 bloc 创建一次:
  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”中的代码处理,然后一切都按预期工作,但我认为,这样一来,我的 Bloc 会保留应用程序生命周期的内存.

第二个问题,如何处理在屏幕内使用数据的情况。这种情况是否推荐使用 Bloc 模式?

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com