Flutter Provider使用

这篇具有很好参考价值的文章主要介绍了Flutter Provider使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Provider之状态管理

下载地址: https://pub-web.flutter-io.cn/packages/provider

导入依赖:

dependencies:
  provider: ^6.0.5

导入头文件:

import 'package:provider/provider.dart';

使用方式

创建 Model 混入 ChangeNotifierCounter 中的私有属性 _count 变化时 ,添加监听 notifyListeners()

class Counter with ChangeNotifier {
  int _count = 0;
  int get count => _count;

  void increment() {
    _count++;
    print(_count);

    /// 监听数据变化
    notifyListeners();
  }
}

设置组件监听使用 MultiProvider ,其中 providers 属性设置需要绑定的数据,即上面的 Counter 类,这里绑定的数据可以是多个。

  
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: MultiProvider(
          /// 设置监听器
          providers: [
            ChangeNotifierProvider(create: (context) => Counter()),
            //ChangeNotifierProvider(create: (context) => Student()),
          ],
          child: Column(
            children: [
                /// 自己添加组件 ...
            ],
          ),
        ),
      ),
    );
  }

也可以设置监听一个 model ,使用 ListenableProvider.value()

        child: ListenableProvider.value(
          value: Counter(),
          child: Column(
            children: [
               /// 自己添加组件 ...
            ],
          ),
        ),

或者使用 ListenableProvider<Counter>

        child: ListenableProvider<Counter>(
          create: (_) => Counter(),
          child: Column(
            children: [
                /// 自己添加组件 ...
            ],
          ),
        ),

在子组件中监听发送,点击按钮修改数据:

      TextButton(
          /// Provider 执行修改数据
          onPressed: () => context.read<Counter>().increment(),
          child: Text("send provider"),
       ),

在子组件中监听改变数据,其他组件修改了该 Counter 中数据,这个Text组件的值会实时更改:

/// 数据赋值
Text("${context.watch<Counter>().count}"),

或者

/// 数据赋值
Counter counter = Provider.of<Counter>(context);
Text("${counter.count}"),

Provider使用起来很简单,数据的动态绑定和其他跨平台语言(Vue)类似。文章来源地址https://www.toymoban.com/news/detail-559709.html

到了这里,关于Flutter Provider使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter 文件读写---path_provider

    在Flutter中,可以通过 path_provider 库来实现文件的读写操作。这个库提供了许多方法,可以方便地获取设备上的常用目录,比如文档目录、下载目录、临时目录等。 在 pubspec.yaml 文件中添加 path_provider 依赖: 然后运行 flutter pub get 命令安装依赖。 首先需要导入 path_provider 库:

    2024年02月08日
    浏览(66)
  • Flutter 状态管理框架 Provider 和 Get 分析

    状态管理 一直是 Flutter 开发中一个火热的话题。谈到状态管理框架,社区也有诸如有以 Get 、 Provider 为代表的多种方案,它们有各自的优缺点。面对这么多的选择,你可能会想:「我需要使用状态管理么?哪种框架更适合我?本文将从作者的实际开发经验出发,分析状态管理

    2024年02月16日
    浏览(42)
  • Flutter 状态管理框架 Provider 和 Get 原理分析

    首先,为什么需要状态管理,这是因为 Flutter 基于 声明式 构建 UI ,使用状态管理的目的之一就是解决「声明式」开发带来的问题。 「声明式」开发是一种区别于传原生的方式,所以我们没有在原生开发中听到过状态管理,如何理解「声明式」开发呢? 「声明式」VS「命令

    2023年04月24日
    浏览(106)
  • 非spring工程使用Maven打包bouncycastle出现JCE cannot authenticate the provider BC的原因及解决

    java版本 :1.8.0_202 bouncycastle包版本 : maven打包插件配置 : 项目是使用netty提供http服务,数据传输中需要进行国密SM系列算法做加密,所以用到bouncycastle的一些加密方法。 项目在idea中启动是正常的,但是打包后放到服务器上运行就会报JCE cannot authenticate the provider BC,直译过来

    2024年02月03日
    浏览(54)
  • PowerShell系列(七)PowerShell当中的Provider介绍

    往期回顾 PowerShell系列(一):PowerShell介绍和cmd命令行的区别 PowerShell系列(二):PowerShell和Python之间的差异介绍 PowerShell系列(三):PowerShell发展历程梳理 PowerShell系列(四):PowerShell进入交互环境的三种方式 PowerShell系列(五):PowerShell通过脚本方式运行笔记 PowerShell系

    2024年02月09日
    浏览(49)
  • ANR原理篇 - service/broadcast/provider超时机制

    ANR概述 ANR基础篇 - Trace.txt文件分析 ANR基础篇 - Input系统 ANR基础篇 - 相关系统知识简介 ANR原理篇 - ANR原理总览 ANR原理篇 - ANR弹框是如何显示出来的 ANR原理篇 - service/broadcast/provider超时机制 ANR原理篇 - Input超时机制 ANR原理篇 - ANR信息收集过程

    2024年02月05日
    浏览(38)
  • Linux内核驱动 --- CCF框架 provider驱动的编写

    复制上节内容中对Provider驱动编写流程的总结: 1)分析硬件的clock tree,按照上面所描述的分类,将这些clock分类。 2)将clock tree在DTS中描述出来,需要注意以下几2点: 3)对于不能由clock framework core处理的clock,需要在driver中使用struct of_device_id进行匹配,并在初始化时,调用

    2024年02月07日
    浏览(48)
  • 快速理解Laravel容器(IOC、DI、Provider、Contract)

    分享一些个人见解。 Laravel里面的某些概念,就像魔术一样,看起来很厉害,当知道魔术怎么变的,就会认为也不过如此。所以不必感觉Laravel里有些概念难以理解。 应当抛除被框架约束思维的枷锁,用PHP设计的角度去思考,关注大概,而不是在在框架层面逐行磨叽。毕竟源码

    2024年04月22日
    浏览(28)
  • PowerShell系列(八)PowerShell系统默认内置的Provider介绍

    往期回顾 PowerShell系列(一):PowerShell介绍和cmd命令行的区别 PowerShell系列(二):PowerShell和Python之间的差异介绍 PowerShell系列(三):PowerShell发展历程梳理 PowerShell系列(四):PowerShell进入交互环境的三种方式 PowerShell系列(五):PowerShell通过脚本方式运行笔记 PowerShell系

    2024年02月11日
    浏览(63)
  • flutter使用shared_preferences依赖库实现简单的本地数据存储,封装成一个简单的单例类,方便前端同学使用

    shared_preferences 仓库地址:shared_preferences | Flutter Package shared_preferences这个依赖库还是非常好用的,全平台支持,就像前端经常使用的localstorage一样方便,所以就想着封装成一个简单的类,方便前端同学使用。封装好的代码支持json或者数组等这种类型的存储和获取。 在utils里面

    2024年01月20日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包