首页 > 其他 > 详细

Provider

时间:2019-05-09 11:49:12      阅读:129      评论:0      收藏:0      [点我收藏+]

共享数据类的写法:

示例:

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‘);
},
),
),
);
}
}

Provider

原文:https://www.cnblogs.com/braveheart007/p/10837557.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!