Skip to content

Instantly share code, notes, and snippets.

@MariaMelnik
Created December 30, 2019 08:32
Show Gist options
  • Save MariaMelnik/1a5dcfbb09ce27ac21326213366e313e to your computer and use it in GitHub Desktop.
Save MariaMelnik/1a5dcfbb09ce27ac21326213366e313e to your computer and use it in GitHub Desktop.
Example streamBuilder + hot reload
import 'dart:async';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(presenter: Presenter()),
);
}
}
class MyHomePage extends StatefulWidget {
final Presenter presenter;
MyHomePage({Key key, this.presenter}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Test stream builder"),
),
body: Center(
child: StreamBuilder<Object>(
stream: widget.presenter.stream,
builder: (context, snapshot) {
if (!snapshot.hasData ) return CircularProgressIndicator();
print("snaphot.hasData: ${snapshot.hasData}");
print("lastVal: ${widget.presenter.lastVal}");
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: widget.presenter.lastVal.map((int i) => Text(i.toString())).toList()
);
}
),
),
);
}
}
class Presenter {
StreamController<List<int>> _controller = StreamController<List<int>>.broadcast();
Stream get stream => _controller.stream;
List<int> _lastVal;
List<int> get lastVal => _lastVal;
Presenter(){
_getData();
}
Future<void> _getData() async {
await Future.delayed(Duration(seconds: 2));
List<int> testList = [1,2,3];
_lastVal = testList;
_controller.add(testList);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment