1. 安装
provider: ^5.0.0
2. 简单上手案例(provider重写计数器)
首先准备好一个类Counter.dart
import 'package:flutter/material.dart';
class Counter extends ChangeNotifier{
int _count=0;
int get count=>_count;
void increament(){
_count++;
notifyListeners();
}
}
关于类中的属性没什么好说的,唯一要注意的是其中的increament函数调用后除了执行"_count++",另外还执行"notifyListeners()"函数,该函数负责通知刷新。
接着main.dart中:
import 'package:flutter/material.dart';
import 'package:p1/model/Counter.dart';
import 'package:provider/provider.dart';
void main(){runApp(MaterialApp(home: ChangeNotifierProvider(create: (_)=>Counter(),child: H2(),)));}
class H2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
final counter = Provider.of<Counter>(context);
return Scaffold(
appBar: AppBar(title: Text("Ddd"),),
body: Center(child: Text(counter.count.toString()),),
floatingActionButton: FloatingActionButton(onPressed: (){counter.increament();},),);
}
}
这里有必要解读一些代码,其中ChangeNotifierProvider这个组件不仅通过create参数创建了全局共享对象Counter,还通过child参数将子组件引入;接着H2类中通过Provider.of<Counter>(context)读取这个全局共享对象,之后再text直接引入counter.count.toString()拿到数据即可;实现自加,则直接调用counter.increament()函数即可,调用后自动刷新