Skip to content

Instantly share code, notes, and snippets.

@yuan-kuan
yuan-kuan / main.dart
Last active June 9, 2019 02:42
dart fancy ?? shorthand for boolean of potentially null
void main() {
final okNoError = {'ok': true, 'error':null};
final errorNotOk = {'ok': false, 'error':true};
final invalidMap = {'alien': 'invasion'};
if (okNoError['ok'] ?? false) {
print('ok, no error');
}
if (errorNotOk['ok'] ?? false) {
print('will not print.');
} else {
@yuan-kuan
yuan-kuan / service_worker.dart
Created December 13, 2018 09:43
how a web worker use dorker
import 'package:dorker/dorker.dart';
import 'package:application/service.dart';
main() {
Service(DorkerBoss());
}
@yuan-kuan
yuan-kuan / dorker_switch_main.dart
Created December 13, 2018 09:39
dorker switch logic in main
Dorker _service;
if (const String.fromEnvironment('USE_WORKER') == 'true') {
print('Asked to use worker');
_service = DorkerWorker(Worker('worker/service.dart.js'));
} else {
print('Not using worker');
_service = Dorker();
Service(Dorker.CrossLink(_service));
}
@yuan-kuan
yuan-kuan / dorker_web.dart
Created December 13, 2018 07:39
dorker web worker
@JS()
library docker_web;
import 'dart:html' show Worker;
import 'package:js/js.dart';
import 'dorker_base.dart';
@anonymous
@yuan-kuan
yuan-kuan / dorker.dart
Created December 13, 2018 05:30
base dorker, 2 lane road
class Dorker<T> {
@protected
final incoming = StreamController<T>();
@protected
final outgoing = StreamController<T>();
Stream<T> get onMessage => incoming.stream;
Sink<T> get postMessage => outgoing.sink;
}
@JS()
library dogs;
import 'package:js/js.dart';
@JS()
@anonymous
class Dog {
external String get name;
external int get age;
import 'package:js/js.dart';
import 'package:excel_worker/dog.dart';
@anonymous
@JS()
abstract class MessageEvent {
external dynamic get data;
}
@yuan-kuan
yuan-kuan / main.dart
Last active September 28, 2018 06:31
import 'dart:async';
import 'dart:html';
import 'package:excel_worker/dog.dart';
void main() {
var w = Worker('worker/dog_raiser.dart.js');
// Listen to Worker's postMessage().
// dart.html convert the callback to a Stream.