ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Provider

2019-05-09 11:49:50  阅读:375  来源: 互联网

标签:stream streamController dispose Bloc context Provider


共享数据类的写法:

示例:

class Bloc {
final StreamController<String> _streamController = StreamController();
Stream<String> stream;

Bloc() {
stream = _streamController.stream.asBroadcastStream();
}

void dispose() {
_streamController.close();
}
}

在构造方法里面写赋值语句,在类里面写变量声明。可以声明数据流。

记得要dispose。

如果引用provider的话,一定要把方法里面的builder和dispose属性补齐;就这么写就可以了;

Provider<Bloc>(
builder: (_) => Bloc(),
dispose: (_, value) => value.dispose(),
child: Example(),
);

引用Provider数据:
Provider.of<Bloc>(context)._streamController.add('caolegequde');
这个里面的<Bloc>不可以忽略掉。


 

 

完整示例:

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';

void main() {
runApp(MyApp());
}

class Bloc {
final StreamController<String> _streamController = StreamController();
Stream<String> stream;

Bloc() {
stream = _streamController.stream.asBroadcastStream();
}

void dispose() {
_streamController.close();
}
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Provider<Bloc>(
builder: (_) => Bloc(),
dispose: (_, value) => value.dispose(),
child: Example(),
);
}
}

class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
floatingActionButton: FloatingActionButton(
child: Icon(Icons.send),
onPressed: (){
Provider.of<Bloc>(context)._streamController.add('caolegequde');
},
),
appBar: AppBar(title: Text('ProviderDemo'),),
body: StreamBuilder<String>(
stream: Provider.of<Bloc>(context).stream,
builder: (context, snapshot) {
return Text(snapshot.data?.toString() ?? 'dashazinigeerhuo');
},
),
),
);
}
}

标签:stream,streamController,dispose,Bloc,context,Provider
来源: https://www.cnblogs.com/braveheart007/p/10837557.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有