isolate demo
dependencies
dependencies:
flutter:
sdk: flutter # The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
main.dart
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_isolates_example/demo_isolates.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(),
);
}
} class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Isolates'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
DartIsolateWidget(),
FlutterIsolateWidget(),
],
),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.home),
onPressed: (){
Navigator.of(context).push(MaterialPageRoute(builder: (context){
return Test();
}));
},
),
);
}
} class Test extends StatelessWidget { @override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('test'),),
body: Container(child: Text('just test'),),
);
}
} class DartIsolateWidget extends StatefulWidget {
@override
_DartIsolateWidgetState createState() => _DartIsolateWidgetState();
} class _DartIsolateWidgetState extends State<DartIsolateWidget> {
StoppableIsolate isolate; @override
Widget build(BuildContext context) => Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
children: <Widget>[
Expanded(
child: Text(
'Dart Isolates',
),
),
Switch(
value: isolate != null,
onChanged: (bool checked) async {
if (checked) {
StoppableIsolate isolate = await spawnIsolate();
setState(() {
this.isolate = isolate;
});
} else {
isolate.stop();
setState(() {
isolate = null;
});
}
},
),
],
),
);
} class FlutterIsolateWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FlatButton(
colorBrightness: Brightness.dark,
color: Colors.blue,
onPressed: () async {
String result = await compute(flutterIsolateComputation, null);
print('RECEIVED: ' + result);
},
child: Text(
'Flutter Isolates',
),
);
}
}
demo_isolates.dart
import 'dart:async';
import 'dart:io';
import 'dart:isolate'; Future<StoppableIsolate> spawnIsolate() async {
ReceivePort receivePort = new ReceivePort();
Isolate isolate = await Isolate.spawn(dartIsolateLongRunningOperation, receivePort.sendPort);
receivePort.listen((data) {
print('RECEIVED: ' + data);
});
return StoppableIsolate(isolate, receivePort);
} // Isolate code
void dartIsolateLongRunningOperation(SendPort sendPort) async {
while (true) {
sleep(Duration(seconds: 3));
sendPort.send('Dart: Worked for 3 seconds');
}
} class StoppableIsolate {
final Isolate isolate;
final ReceivePort receivePort; StoppableIsolate(this.isolate, this.receivePort); void stop() {
receivePort.close();
isolate.kill(priority: Isolate.immediate);
}
} // Isolate code
String flutterIsolateComputation(Null unused) {
sleep(Duration(seconds: 3));
return 'Flutter: Worked for 3 seconds';
}
isolate demo的更多相关文章
- flutter isolate demo
main.dart import 'package:flutter/material.dart'; import 'package:flutter_isolate/flutter_isolate.da ...
- isolate sqflite demo
main.dart import 'package:flutter/material.dart'; import 'demo_isolates.dart'; import 'package:rxdar ...
- iOS苹果官方Demo合集
Mirror of Apple’s iOS samples This repository mirrors Apple’s iOS samples. Name Topic Framework Desc ...
- 理解CSS3 isolation: isolate的表现和作用
转自:http://www.zhangxinxu.com/wordpress/?p=5155 只要元素可以创建层叠上下文,就可以阻断mix-blend-mode! 于是,不仅仅是isolation:i ...
- isolate 通信
main.dart import 'package:flutter/material.dart'; import 'package:flutter_isolate/flutter_isolate.da ...
- 通过一个demo了解Redux
TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...
- 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo
有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...
- 在线浏览PDF之PDF.JS (附demo)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...
- 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo
Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
随机推荐
- SpringBoot注解大全 转
2019年3月17日22:30:10 一.注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan.@Configuration和@Enab ...
- input 在 2 和 3 上的区别
2 和 3 上面 在 input 的区别 1 2 3 name = raw_input('请输入用户名:')#python2.7的用法 name = input('请输入用户名:')#python3 ...
- JS promise
1.Promise是什么? Promise是抽象异步处理对象以及对其进行各种操作的组件. 2.实例化 使用new来调用Promise的构造器来进行实例化 var promise = new Promi ...
- 使用sessionStorage进行数据存值
<!DOCTYPE html> <head> <meta charset="UTF-8" /> <meta name="view ...
- 描述逻辑(DL)基础知识
Logic逻辑理论实际上是一个规范性(normative)的理论,而不是一个描述性的(descriptive)理论.即,它并不是用来描述人类究竟是采用何种的形式来推理的,而是来研究人类应该如何有效的进 ...
- 理解npm run
引言 ReactNative 开发中经常用到一些npm run的命令来打包.最近在这上面踩了一个坑,所以研究了一下. 在阅文做了两个ReactNative混合开发的项目,都用npm run bundl ...
- Delphi 的内存操作函数(2): 给数组指针分配内存
静态数组, 在声明时就分配好内存了, 譬如: var arr1: ..] of Char; arr2: ..] of Integer; begin ShowMessageFmt('数组大小 ...
- 构建react项目失败解决办法
1.初始化项目,报下方错误 2.解决方法,更新淘宝镜像 npm config set registry https://registry.npm.taobao.org 3.在初始化项目 create- ...
- delphi 调试查看变量值
在debug状态,打开run下的add watch就可以添加需要查看的变量,可以各种格式显示非常方便
- [Freemarker]自定义时间戳函数
使用freemarker的web项目经常需要用在Url后面加上时间戳来保证资源不被缓存,我们可以自定义方法实现时间戳. 先看freemarker配置信息: <bean id="free ...