当前位置:网站首页>BlocProvider 为什么感觉和 Provider 很相似?
BlocProvider 为什么感觉和 Provider 很相似?
2022-07-01 21:38:00 【InfoQ】
前言
SimpleBlocProviderBlocBlocProviderProvider 的模仿者?
BlocProviderclass BlocCounterWrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (_) => CounterCubit(),
child: BlocCounterPage(),
);
}
}
class BlocCounterPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Bloc 计数器'),
),
body: Center(
child: BlocBuilder<CounterCubit, int>(
builder: (context, count) => Text(
'$count',
style: TextStyle(
fontSize: 32,
color: Colors.blue,
),
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
context.read<CounterCubit>().increment();
},
tooltip: '点击增加',
child: Icon(Icons.add),
),
);
}
}
ProviderWidget build(BuildContext context) {
return BlocProvider(
create: (_) => CounterCubit(),
child: BlocCounterPage(),
);
}
ProviderWidget build(BuildContext context) {
return Provider(
create: (_) => CounterCubit(),
child: BlocCounterPage(),
);
}
FloatingActionButtoncontext.readProviderProviderlibrary flutter_bloc;
export 'package:bloc/bloc.dart';
export 'package:provider/provider.dart'
show ProviderNotFoundException, ReadContext, SelectContext, WatchContext;
ProviderblocProvider

与 Provider 的异同
BlocProviderProviderProviderBlocProviderProvidervaluefinal counter = CounterCubit();
//...
BlocProvider.value(
value: counter,
child: SomeWidget(),
);
context.readcontext.watchfinal isPositive = context.select((CounterBloc b) => b.state >= 0);
MultiBlocProviderMultiBlocProvider(
providers: [
BlocProvider<BlocA>(
create: (BuildContext context) => BlocA(),
),
BlocProvider<BlocB>(
create: (BuildContext context) => BlocB(),
),
BlocProvider<BlocC>(
create: (BuildContext context) => BlocC(),
),
],
child: ChildA(),
)
ProviderBlocProviderBlocProviderProviderChangeNotifiernotifyListenersBlocProviderSimpleBlocProviderStream.listenstatic VoidCallback _startListening(
InheritedContext<BlocBase?> e,
BlocBase value,
) {
final subscription = value.stream.listen(
(dynamic _) => e.markNeedsNotifyDependents(),
);
return subscription.cancel;
}
ProviderBlocProviderStream.listenChangeNotiferProviderProviderBlocProvidernotifyListeners总结
BlocProviderProviderBlocProviderProvider
边栏推荐
猜你喜欢

编程英语生词笔记本

杰理之蓝牙耳机品控和生产技巧【篇】

杰理之烧录都使用 VBAT 供电,供电电压 4.2V【篇】

Customize the insertion of page labels and realize the initial search of similar address books

AIDL基本使用

收到一封CTO来信,邀约面试机器学习工程师

Detailed explanation and code example of affinity propagation clustering calculation formula based on graph

Penetration tools - trustedsec's penetration testing framework (PTF)

新版Free手机、PC、平板、笔记本四端网站缩略展示图在线一键生成网站源码

2022年低压电工考试试题及答案
随机推荐
matlab遍历图像、字符串数组等基本操作
leetcode刷题:栈与队列01(用栈实现队列)
An operation tool used by we media professionals who earn 1w+ a month
leetcode刷题:栈与队列02(用队列实现栈)
BPR(贝叶斯个性化排序)
从20s优化到500ms,我用了这三招
【opencv】train&test HOG+SVM
MySQL清空表数据
【STM32】STM32CubeMX教程二–基本使用(新建工程点亮LED灯)
上半年暂停考试要补考?包含监理工程师、建筑师等十项考试
从20s优化到500ms,我用了这三招
杰理之、产线装配环节【篇】
Kuberntes云原生实战一 高可用部署架构
同花顺股票开户选哪个券商好手机开户是安全么?
极客DIY开源方案分享——数字幅频均衡功率放大器设计(实用的嵌入式电子设计作品软硬件综合实践)
联想电脑怎么连接蓝牙耳机?
Review notes of Zhang Haifan in introduction to software engineering (Sixth Edition)
小鸟逃票登机,如何反思,应如何解决,飞机为何怕小鸟?
burpsuite简单抓包教程[通俗易懂]
Learn white box test case design from simple to deep