Flutter模块之Provider
添加依赖 dependencies: provider: ^4.3.2+4 MultiProvider 对多个 Provider 整理 name description Provider 最基础的 provider 组成,接收一个值并暴露它, 无论值是什么。 ListenableProvider 供可监听对象使用的特殊 provider,ListenableProvider 会监听对象,并在监听器被调用时更新依赖此对象的 widgets。 ChangeNotifierProvider 为 ChangeNotifier 提供的 ListenableProvider 规范,会在需要时自动调用ChangeNotifier.dispose。 ValueListenableProvider 监听 ValueListenable,并且只暴露出ValueListenable.value。 StreamProvider 监听流,并暴露出当前的最新值。 FutureProvider 接收一个Future,并在其进入 complete 状态时更新依赖它的组件。 Provider 最基础的 provider 组成,接收一个值并暴露它, 无论值是什么。但是不是会 ui 上刷新 生成 model class CountModel { // 全局状态 int count = 0; // 状态指定方法 add() { this.count++; print(this.count); } } main.dart import 'package:FlutterProvider/model/CountModel.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; main() { runApp( // 使用Provider管理 Provider<CountModel>( create: (_) { return CountModel(0); }, child: MyApp(), ), ); } class MyApp extends StatelessWidget { const MyApp({Key key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( title: "Provider", home: HomePage(), ); } } class HomePage extends StatelessWidget { const HomePage({Key key}) : super(key: key); @override Widget build(BuildContext context) { // 获取Provider管理的model CountModel count = Provider.of<CountModel>(context); return Scaffold( appBar: AppBar( title: Text("Flutter Provider"), ), body: Center( child: Text("当前的值:${count.count.toString()}"), ), floatingActionButton: FloatingActionButton( onPressed: () { // 调用model中的方法,会在control中输出,但是不会在ui上更新 count.add(); }, child: Icon(Icons.add), ), ); } } ChangeNotifierProvider(常用) 为 ChangeNotifier 提供的 ListenableProvider 规范,会在需要时自动调用ChangeNotifier.dispose。 ...