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){
}
}
原文:https://www.cnblogs.com/pythonClub/p/10792324.html