Skip to content

Instantly share code, notes, and snippets.

View kwalrath's full-sized avatar

Kathy Walrath kwalrath

View GitHub Profile
myReduxStore.onChange
.map((s) => MyViewModel(s))
.distinct()
.listen( /* update UI */ );
StreamBuilder<String>(
stream: NumberCreator().stream.map((i) => 'String $i'),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Text('No data yet.');
} else if (snapshot.connectionState == ConnectionState.done) {
return Text('Done!');
}
}
)
StreamBuilder<String>(
stream: NumberCreator().stream.map((i) => 'String $i'),
builder: (context, snapshot) {
/* Build widgets! */
}
)
class NumberCreator {
NumberCreator() {
Timer.periodic(Duration(seconds: 1), (t) {
_controller.sink.add(_count);
_count++;
});
}
var _count = 1;
final _controller = StreamController<int>();
final myStream = NumberCreator().stream.asBroadcastStream();
final subscription = myStream.listen(
(data) => print('Data: $data'),
);
final subscription2 = myStream.listen(
(data) => print('Data again: $data'),
);
@kwalrath
kwalrath / example1.dart
Last active January 31, 2020 22:07
Gists for streams article
final myStream = NumberCreator().stream;
final subscription = myStream.listen(
(data) => print('Data: $data'),
);
// Add a contravariant variance modifier
class Writer<in T> {
void write(T x) => print(x);
}
main() {
// Error! Cannot assign Writer<int> to Writer<Object> because the type
// parameter is contravariantly declared.
Writer<Object> objectWriter = new Writer<int>();
}
void main() {
var iterable = ['Salad', 'Popcorn', 'Toast'];
for (var element in iterable) {
print(element);
}
}
void main() {
Iterable iterable = ['Salad', 'Popcorn', 'Toast'];
print('The first element is ${iterable.first}');
print('The last element is ${iterable.last}');
}
bool predicate(String element) {
return element.length > 5;
}
main() {
var items = ['Salad', 'Popcorn', 'Toast', 'Lasagne'];
// You can find with a simple expression:
var element1 = items.firstWhere((element) => element.length > 5);
print(element1);