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。 ...

一月 24, 2025 · 2 分钟 · anoya

Rust常用模块之Env log

1 安装 Install with Crate # 创建名为log的项目 cargo new mylog # 进入到目录执行命令,将所需模块加载当前环境目录中 cargo add log env_logger 在 Cargo.toml 中的[dependencies]可以看到具体模块信息如下方所示 [package] name = "mylog" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] env_logger = "0.10.0" log = "0.4.19" 2 使用 通过拷贝文档中的Example1,并添加方法体 use log::{debug, error, info, log_enabled, Level}; fn main() { env_logger::init(); debug!("this is a debug {}", "message"); error!("this is printed by default"); if log_enabled!(Level::Info) { let x = 3 * 4; // expensive computation info!("the answer was: {}", x); } } Output: ...

一月 24, 2025 · 1 分钟 · anoya