当前位置:网站首页>Flutter之Provider共享数据的两种方式
Flutter之Provider共享数据的两种方式
2022-04-23 06:35:00 【可可鸭~】
Provider共享数据的两种方式
方式一:
Provider.of<CountViewModel>(context);
举例
import 'package:flutter/material.dart';
class CountViewModel extends ChangeNotifier{
int _count = 0;
//将变量暴露在外面
int get count=>_count;
addCount(){
_count++;
notifyListeners();//通知状态改变
}
deCount(){
_count--;
notifyListeners();
}
}
import 'package:flutter/material.dart';
import 'package:navigatoritem/page/CountViewModel.dart';
import 'package:provider/provider.dart';
class B extends StatefulWidget{
_BState createState() =>_BState();
}
class _BState extends State<B>{
@override
Widget build(BuildContext context){
final counter = Provider.of<CountViewModel>(context);//拿到provider
return Scaffold(
appBar:AppBar(
title: Text("计数器"),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: (){
Provider.of<CountViewModel>(context,listen: false).addCount();
},
),
body: Container(
child: Center(
child: Text("${counter.count}"),
),
),
);
}
}
Provider.of(context) 会导致调用的 context 页面范围的刷新。 Consumer 只刷新了 Consumer
的部分 建议尽量使用 Consumer 而不是 Provider.of(context) 获取顶层数据
方式二
import 'package:flutter/material.dart';
import 'package:navigatoritem/page/CountViewModel.dart';
import 'package:provider/provider.dart';
class B extends StatefulWidget{
_BState createState() =>_BState();
}
class _BState extends State<B>{
@override
Widget build(BuildContext context){
final counter = Provider.of<CountViewModel>(context);//拿到provider
return Consumer(
builder: (context,CountViewModel counter,_){
return Scaffold(
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: (){
counter.addCount();
},
),
appBar: AppBar(
title: Text("Consumer数据共享"),
),
body: Text("${counter.count}"),
);
},
);
}
}
版权声明
本文为[可可鸭~]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_43547255/article/details/124298275
边栏推荐
- Complete learning from scratch, machine learning and deep learning, including theory and code implementation, mainly using scikit and mxnet, and some practices (on kaggle)
- 利用sqlmap注入获取网址管理员账号密码
- Research on system and software security (2)
- Cloud computing skills competition -- Part 2 of openstack private cloud environment
- Research on system and software security (4)
- Construction of middleman environment mitmproxy
- STO With Billing 跨公司库存转储退货
- RGB color to hex and unit conversion
- 内网渗透系列:内网隧道之icmptunnel(jamesbarlow师傅的)
- feign如何集成hystrix
猜你喜欢

Cloud computing skills competition -- Part 2 of openstack private cloud environment

內網滲透系列:內網隧道之icmpsh

Buctf MISC brossage

Intranet penetration series: icmpsh of Intranet tunnel

CTF attack and defense world brush questions 51-

Intranet penetration series: ICMP of Intranet tunnel_ Tran

nacos源码分析思路

Houdini > fluid, rigid body export, learning process notes

Three minutes to teach you to use Houdini fluid > > to solve particle fluid droplets

BUUCTF MISC刷題
随机推荐
云计算技能大赛 -- openstack私有云环境 第二部分
SAP GUI security
Houdini流体>>粒子流体导出到unity笔记
VBA appelle SAP RFC pour réaliser la lecture et l'écriture des données
聊聊接口幂等与消费幂等的本质
第五章 投资性房地产
[极客大挑战 2019]Havefun1
BUFFCTF文件中的秘密1
RGB color to hex and unit conversion
[NLP notes] preliminary study on CRF principle
利用sqlmap注入获取网址管理员账号密码
ABAP ALV显示金额与导出金额不一致
BUUCTF [ACTF2020 新生赛]Include1
Zhuang understand's TA notes (VI) < fakeenvreflect & rust, rust effect >
yum源仓库本地搭建的两种方法
MYSQL——第一章节(数据类型2)
Buuctf misc brush questions
linux下mysql数据库备份与恢复(全量+增量)
BUUCTF MISC刷題
Research on system and software security (I)