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

  

转载于:https://www.cnblogs.com/pythonClub/p/10792324.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值