Flutter Widget 之StatefulBuilder构建方法详解

 更新时间:2022年11月23日 15:32:38   作者:程序员界的小学生  
这篇文章主要为大家介绍了Flutter Widget 之StatefulBuilder构建方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

你曾否意识到你需要拆分一个大型的构建方法,但又觉得这听起来很费劲?

试试StatefulBuilder 以最小的代价获得一个个单独的小部件的所有性能

想象一下,这样的一个小部件,有一个可以切换单一标志的便宜的子部件,然后是一个昂贵的小部件。

除非绝对必要,否则你不会想要重建它

bool isExpanded = false;
Widget build(context) {
    return Column(
        children: [
            InexpendsiveStateful(
                isExpanded: isExpanded,
                onTap: (bool newValue) => setState(() => isExpanded = val),
            ),
            ExpensiveStateless(),
        ]
    );
}

性能问题解决

为了解决性能问题,用一个StatefulBuilder来包装Stateful部分,StatefulBuilder与builder类似,除了传递给builder的那个额外的setState参数

bool isExpanded = falise;
Widger build(context) {
    return Column(
        children: [
            StatefulBuilder(
                builder: (ctx, setState) => 
                    InexpensiveStateful(
                        isExpanded: isExpanded,
                        onTap: (bool newValue) => setState(() => isExpanded = val),
                    )
            ),
            ExpensiveStateless(),
        ]
    );
}

为了善加利用这个崭新的小部件,调用其特殊的setState函数来重建你的应用程序的那一部分,当那个onTap方法被调用setState时,它就是你的StatefulBuilder的setState范围

这意味着你的ExpensiveStateless小部件仍然没有被触动

StatefulBuilder是一个很好的方法,可以从一个单独的小部件中获得所有的性能提升,而不需要做大部分的工作。

如果想了解有关# StatefulBuilder的内容,或者关于Flutter的其他功能,请访问pub.dev

以上就是Flutter Widget 之StatefulBuilder构建方法详解的详细内容,更多关于Flutter Widget StatefulBuilder的资料请关注脚本之家其它相关文章!

相关文章

  • android之camera用法实例详解

    android之camera用法实例详解

    这篇文章主要介绍了android之camera用法,以实例形式较为详细的分析了Android使用camera拍照的相关技巧与注意事项,需要的朋友可以参考下
    2015-09-09
  • Android AOP注解Annotation详解(一)

    Android AOP注解Annotation详解(一)

    这篇文章主要介绍了Android AOP注解Annotation详细介绍的相关资料,Annotation是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理,需要的朋友可以参考下
    2017-03-03
  • Android 3.0引入的异步加载机制Loader

    Android 3.0引入的异步加载机制Loader

    Loader装载器从android3.0开始引进。它使得在activity或fragment中异步加载数据变得简单。下面我们就来详细讲解下
    2017-12-12
  • Android使用ViewDragHelper实现仿QQ6.0侧滑界面(一)

    Android使用ViewDragHelper实现仿QQ6.0侧滑界面(一)

    这篇文章主要介绍了Android使用ViewDragHelper实现仿QQ6.0侧滑界面(一)的相关资料,需要的朋友可以参考下
    2016-02-02
  • Android中Uri和Path之间的转换的示例代码

    Android中Uri和Path之间的转换的示例代码

    本篇文章主要介绍了Android中Uri和Path之间的转换的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • Android Studio3.0.1填坑笔记

    Android Studio3.0.1填坑笔记

    IntelliJ IDEA 功能强大,是Jet Brains 公司开发商业IDE(集成开发环境),同时支持Java, Scala 和Groovy。下面小编给大家带来了Android Studio3.0.1填坑笔记,需要的朋友一起看看吧
    2018-01-01
  • flutter实现底部不规则导航栏

    flutter实现底部不规则导航栏

    这篇文章主要为大家详细介绍了flutter实现底部不规则导航栏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Android应用保活实践详解

    Android应用保活实践详解

    这篇文章主要介绍了Android应用保活实践详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Android TextView两端对齐解决办法

    Android TextView两端对齐解决办法

    这篇文章主要介绍了Android TextView两端对齐解决办法的相关资料,需要的朋友可以参考下
    2017-06-06
  • Android Volley扩展实现支持进度条的文件上传功能

    Android Volley扩展实现支持进度条的文件上传功能

    这篇文章主要为大家详细介绍了Android Volley扩展实现文件上传与下载功能,支持进度条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12

最新评论