2个监听器+ dialog + replysubject + extends
import 'package:flutter/material.dart';
import 'package:rxdart/rxdart.dart';
import 'package:flutter/widgets.dart';
//import 'package:flutter_mvvm/core/viewmodel_provider.dart';
//import 'package:flutter_mvvm/page/home/viewmodel_home.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter MVVM Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage(),
);
}
} class HomePage extends StatefulWidget{
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return HomePageState();
}
} class HomePageState extends State<HomePage> {
ExtremeBloc extremeBloc = ExtremeBloc(); // _showDialog(){
//
// showDialog(context: context,
// builder: (_){
// return SimpleDialog(
// title: Text('dialog'),
// children: <Widget>[
// StreamBuilder(
// stream: dataBloc.dataBloc.stream,
// builder: (context, snapshot){
// if(snapshot.hasData){
// var data = snapshot.data;
// return Container(
// child: Text('$data'),
// );
//
// }else{
// return Text('pending..');
// }
// },
// ),
// ],
// );
// });
// } @override
Widget build(BuildContext context) {
extremeBloc.get1String();
extremeBloc.get2String();
return Scaffold(
appBar: AppBar(title: Text('test'),),
body: Container(
child: Column(
children: <Widget>[
StreamBuilder(
stream: extremeBloc.data1Bloc.stream,
builder: (context, snapshot){
if(snapshot.hasData){
return Text('from 1: ${snapshot.data}');
}else{
return Text('no data from 1');
}
},
), StreamBuilder(
stream: extremeBloc.data2Bloc.stream,
builder: (context, snapshot){
if(snapshot.hasData){
return Text('from 2: ${snapshot.data}');
}else{
return Text('no data from 2');
}
},
), ],
),
),
);
}
} class DataBloc {
ReplaySubject data1Bloc = ReplaySubject(); get1String()async{
for(int i=0; i<10; i++){
data1Bloc.add(i);
await Future.delayed(Duration(seconds: 1));
}
}
} class ExtremeBloc extends DataBloc {
ReplaySubject data2Bloc = ReplaySubject(); get2String()async{
for(int i=0; i<10; i++){
data2Bloc.add(i*100);
await Future.delayed(Duration(seconds: 1));
}
}
}
2个监听器+ dialog + replysubject + extends的更多相关文章
- Android:Dialog中隐藏键盘的注意事项
场景:弹出一个Dialog.里面有一个EditText.用来输入内容.由于输入时.须要弹出键盘.所以当Dialog消失时.键盘要一起隐藏. 如今我们做一个自己定义的Dialog MyDialog ex ...
- Java事件监听的四种实现方式
1.事件对象: 一般继承自java.util.EventObject对象,由开发者自行定义. 2.事件源: 就是触发事件的源头,不同的事件源会触发不同的事件类型. 3.事件监听器: 事件监听器负责监听 ...
- android软件简约记账app开发day08-时间对话框的书写+改bug,改bug
android软件简约记账app开发day08-时间对话框的书写+改bug,改bug 绘制对话跨页面 在添加记账信息功能中,我提供了用户添加备注添加事件的功能,设计是点击时间会弹出一个时间对话框供用户 ...
- 5.JAVA之GUI编程窗体事件
我们回顾下第三篇时的内容: 在3.JAVA之GUI编程Frame窗口中窗体是无法直接关闭的,想要关闭须进程管理器结束进程方式关掉. 现在我们就来解决下这个问题. ******************* ...
- java的栈图形演示
import java.awt.*; import javax.swing.*; import java.awt.event.*; /* 指示发生了组件定义的动作的语义事件.当特定于组件的动作(比如被 ...
- JAVA基础知识之Annotation
基本Annotation Annotation必须使用工具(APT, Annotation tool)才能处理,Annotation可以在编译,类加载,运行时被读取,并执行相应处理. 下面介绍一些常用 ...
- Android之自定义控件-下拉刷新
实现效果: 图片素材: --> 首先, 写先下拉刷新时的刷新布局 pull_to_refresh.xml: <resources> <string name=& ...
- 解决msi文件在XP上安装未完成(提示安装程序被中断,未能安装app。需要重新启动该安装程序进行重试)的问题。
如图所示,我利用Visual Studio 2015制作了一个小程序.基于.Net 4.0.用VS的Install扩展,新建Install项目进行打包.打包为.msi文件.该安装文件在已经安装了 .N ...
- (六)观察者模式详解(包含观察者模式JDK的漏洞以及事件驱动模型)
作者:zuoxiaolong8810(左潇龙),转载请注明出处,特别说明:本博文来自博主原博客,为保证新博客中博文的完整性,特复制到此留存,如需转载请注明新博客地址即可. 本章我们讨论一个除前面的单例 ...
随机推荐
- Handler Bundle Runnable
Handler: 不能在子线程更新UI,可以通过handler来实现在子线程发送消息在主线程更新 Bundle: https://blog.csdn.net/qq_36895346/ar ...
- springboot/Mybatis整合
正题 本项目使用的环境: 开发工具:Intellij IDEA 2017.1.3 springboot: 1.5.6 jdk:1.8.0_161 maven:3.3.9 额外功能 PageHelper ...
- 微信昵称有特殊符号怎么保存到mysql库里?
微信昵称有特殊符号怎么保存到mysql库里? mysql库怎么保存emoji表情? 这里提供 1 种稳妥有效的方法: // 入库之前,使用 Base64 编码 String nickname = re ...
- 推送测试,生产环境无法打印log获取deviceToken,可以通过弹窗获取deviceToken
z- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:( ...
- 对Vuex的初步了解
文章转载于:http://www.cnblogs.com/wisewrong/p/6344390.html 在 Vue.js 的项目中,如果项目结构简单, 父子组件之间的数据传递可以使用 props ...
- 二、springboot使用jpa
花了几天时间,好好看了看springboot的jpa部分,总结了常用的形式. 1.通过STS工具添加jpa的依赖项 要连mysql,测试的时候需要web,顺便添加了lombok不写set和get方法了 ...
- python基础2 数据类型、数据拼接、数据转换
一.数据类型 1.字符串 字符串英文string,简写str,只要是被[单/双/三引号]这层皮括起来的内容,不论那个内容是中文.英文.数字甚至火星文.只要是被括起来的,就表示是字符串类型 如:prin ...
- c++ 第一次实验
实验内容: 2-28:实现一个简单的菜单程序,运行时显示“Menu:A(dd) D(elete) S(ort) Q(uit),Selete one:”提示用户输入.A表示增加,D表示删除, S表示排序 ...
- qss qt按钮自定义
- Linux netfilter 学习笔记
https://blog.csdn.net/lickylin/article/details/33321905