Flutter MultiBlocProvider 性能

Posted

技术标签:

【中文标题】Flutter MultiBlocProvider 性能【英文标题】:Flutter MultiBlocProvider Performance 【发布时间】:2020-06-15 01:19:46 【问题描述】:

我有一个MultiBlocProvider 分配给一个应用程序,该应用程序有一个底部导航栏,可以在主页搜索等主要路线中导航, 愿望清单 ...

我使用setState() 为每条路线更改currentPage

最近我通过使用flutter_bloc 包为每个人添加了Blocs,并且我正在使用BlocProvider 为每个BlocBuilder 提供bloc,

 @override
  Widget build(BuildContext context) 
    return SafeArea(
      top: false,
      child: Scaffold(
        key: _scaffoldKey,
        body: PageStorage(
          child: Stack(
            children: <Widget>[
              AnimatedSwitcher(
                duration: Duration(milliseconds: 200),
                  child: BlocProvider<WishlistBloc>(
                      create: (BuildContext context) => WishlistBloc(WishlistRepository()),
                      child: currentPage),
              ),
              bottomBar(currentPageScroll)
            ],
          ),
          bucket: bucket,
        ),
      ),
    );
  

可以使用MultiBlocProvider 提供我需要的所有 BlocsProviders 吗?

他们可能超过 10 个提供商,这会影响应用程序的性能吗?

【问题讨论】:

【参考方案1】:

绝对没问题,MultiBlocProvider 就是为此目的而创建的。但是您需要了解,如果您在创建时还发送(例如)初始化事件,该事件开始在所有 10 个块中加载一些数据,您将遇到一些问题。因此,如果您遇到一些性能问题,请创建单独的 SO 问题,社区将帮助您找到问题的根本原因。

【讨论】:

以上是关于Flutter MultiBlocProvider 性能的主要内容,如果未能解决你的问题,请参考以下文章

MultiBlocProvider 未实例化所有 bloc 提供程序 - 如何正确使用 MultiBlocProvider?

在“MultiBlocProvider”中使用“BlocBuilder”时出现错误

Flutter BLOC 和 Provider 如何注册在一起

使用不包含 PhoneAuthenticationBloc 类型的 Bloc 的上下文调用 BlocProvider.of()。扑

Xcode 13 和 Flutter 2.5.1 - 致命错误:找不到“Flutter/Flutter.h”文件 #import <Flutter/Flutter.h>

Flutter 致命错误:找不到“Flutter/Flutter.h”文件