Flutter的局部刷新-StatefulBuilder

本文介绍了在Flutter中如何使用StatefulBuilder来实现局部刷新,以提高性能。传统的setState()方法会刷新整个UI,而StatefulBuilder则允许开发者只更新特定部分。通过示例代码展示了如何在按下按钮时更新计数器,以此说明StatefulBuilder的用法。

一、前言

在Flutter中用到setState(() {});来进行刷新,不过这种方式常常会导致整个UI进行刷新在性能上不是很好,因此官方提供了StatefulBuilder来进行局部刷新

二、演示代码

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

///StatefulBuilder测试
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    print('YM------父控件刷新');
    return MaterialApp(
      title: 'Material App',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Material App Bar'),
        ),
        body: Center(
          child: Container(
            child: Column(
              children: [
                _buildChild(),
                RaisedButton(
                  onPressed: (){
                    _setter(() {
                      _count++;
                    });
                  },
                  child: Text('第二种计数方式'),
                )
              ],
            ),
          ),
        ),
      ),
    );
  }
}

int _count = 0;
StateSetter _setter;

_buildChild() => StatefulBuilder(
  builder: (BuildContext context, StateSetter setState){
    _setter = setState;
    print('YM------子控件刷新');
    return Container(
      child: Column(
        children: [
          Text('计数:$_count'),
          RaisedButton(
            onPressed: (){
              setState(() {
                _count++;
              });
            },
            child: Text('第一种计数方式'),
          )
        ],
      ),
    );
  },
);

三、参考链接

  1. Flutter 小技巧实现通用的局部刷新:

    https://juejin.cn/post/6877460444651454478

课程首先介绍了Flutter的主要知识,通过4个案例消化吸收知识点。并通过手把手一步步带您完成一个【我的备忘录】APP项目,使得您真正认识Flutter在实际项目中的优势。  通过本课程学习您可以学习到Flutter技术如下知识:第1章 Flutter概述知识点:移动应用开发现状、移动应用开发类型、Hybrid与移动跨平台开发策略、Flutter是什么?、Flutter特点、Flutter体系结构。第2章 Flutter开发环境搭建知识点:基于Windows的Android开发环境、基于macOS的iOS开发环境、IDE开发工具设置。第3章 Flutter基础知识点:完成一个Flutter程序、一切都是组件(Widget)、组件分类、使用图片和图标资源、使用文本组件、增加调试组件工具。第4章 布局组件知识点:Flutter布局概述、容器布局(Container)、行(Row)、列(Column)布局、层叠布局、ListView、GridView。第5章 Material风格组件知识点:按钮、输入框、复选框、单选按钮、开关按钮、滑块。第6章 iOS Cupertino风格组件知识点:iOS Cupertino页面、Cupertino按钮、Cupertino开关按钮、Cupertino滑块、Cupertino分段控件。第7章 状态管理知识点:状态管理概述、局部状态管理、全局状态管理。第8章 导航知识点:导航概述、面包屑导航、标签导航、页面组件分散在不同文件中、全局状态管理与导航。第9章 工程依赖管理知识点:工程依赖管理概述、pub依赖管理工具。第10章 数据存储知识点:Flutter数据存储策略、键值对数据存储、文件数据存储、SQLite数据存储、示例:数据CRUD操作。第11章 网络通信知识点:搭建自己的Web服务器、使用http包、示例:城市信息列表。第12章 项目实战:我的备忘录APP知识点:备忘录APP项目说明、备忘录项目后台Web服务API说明、备忘录APP项目分析与设计、初始化工程、持久层实现、表示层实现。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值