首页 > 其他 > 详细

2个监听器+ dialog + replysubject

时间:2019-04-29 19:17:23      阅读:149      评论:0      收藏:0      [点我收藏+]
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> {
  DataBloc dataBloc = DataBloc();

  _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) {
    dataBloc.get1String();
    dataBloc.get2String();
    return Scaffold(
      appBar: AppBar(title: Text(‘test‘),),
      body: Container(
        child: Column(
          children: <Widget>[
            StreamBuilder(
              stream: dataBloc.dataBloc.stream,
              builder: (context, snapshot){
                if(snapshot.hasData){
                  return Text(‘from 1: ${snapshot.data}‘);
                }else{
                  return Text(‘no data from 1‘);
                }
              },
            ),

            StreamBuilder(
              stream: dataBloc.data2Bloc.stream,
              builder: (context, snapshot){
                if(snapshot.hasData){
                  return Text(‘from 2: ${snapshot.data}‘);
                }else{
                  return Text(‘no data from 2‘);
                }
              },
            ),



          ],
        ),
      ),
    );
  }
}


class DataBloc {
//  PublishSubject dataBloc = PublishSubject();
  ReplaySubject dataBloc = ReplaySubject();
  ReplaySubject data2Bloc = ReplaySubject();

  DataBloc(){
    dataBloc.listen(onData);
  }

  get1String()async{
    for(int i=0; i<10; i++){
      dataBloc.add(i);
      await Future.delayed(Duration(seconds: 1));
    }
  }

  get2String()async{
    for(int i=0; i<10; i++){
      data2Bloc.add(i*100);
      await Future.delayed(Duration(seconds: 1));
    }
  }

  void onData(value){

  }
}

  

 

2个监听器+ dialog + replysubject

原文:https://www.cnblogs.com/pythonClub/p/10792324.html

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