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的更多相关文章

  1. flutter isolate demo

    main.dart import 'package:flutter/material.dart'; import 'package:flutter_isolate/flutter_isolate.da ...

  2. isolate sqflite demo

    main.dart import 'package:flutter/material.dart'; import 'demo_isolates.dart'; import 'package:rxdar ...

  3. iOS苹果官方Demo合集

    Mirror of Apple’s iOS samples This repository mirrors Apple’s iOS samples. Name Topic Framework Desc ...

  4. 理解CSS3 isolation: isolate的表现和作用

    转自:http://www.zhangxinxu.com/wordpress/?p=5155 只要元素可以创建层叠上下文,就可以阻断mix-blend-mode! 于是,不仅仅是isolation:i ...

  5. isolate 通信

    main.dart import 'package:flutter/material.dart'; import 'package:flutter_isolate/flutter_isolate.da ...

  6. 通过一个demo了解Redux

    TodoList小demo 效果展示 项目地址 (单向)数据流 数据流是我们的行为与响应的抽象:使用数据流能帮我们明确了行为对应的响应,这和react的状态可预测的思想是不谋而合的. 常见的数据流框架 ...

  7. 很多人很想知道怎么扫一扫二维码就能打开网站,就能添加联系人,就能链接wifi,今天说下这些格式,明天做个demo

    有些功能部分手机不能使用,网站,通讯录,wifi基本上每个手机都可以使用. 在看之前你可以扫一扫下面几个二维码先看看效果: 1.二维码生成 网址 (URL) 包含网址的 二维码生成 是大家平时最常接触 ...

  8. 在线浏览PDF之PDF.JS (附demo)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html#skill 下载地址:http://mozilla.gith ...

  9. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

随机推荐

  1. llinux挂载多个光驱

    因为u盘量产,一个u盘两启,所以linux需要访问多个cdrom(一个物理光驱,一个虚拟光驱),本来一位无法使用,看了看/dev目录下面, [root@linux-node3 cdrom]$ ll / ...

  2. 织梦,dede:list和dede:artlist的区别

    dede:list可以配合pagelist进行分页,而artlsit不能进行分页. 如果要翻页只能用list的

  3. js基本概述

    js(javascript)是一门编程语言,用来实现与浏览器交互. 一 js的基本语法要求有以下几点 1严格区分大小写 2标识符起名要求与java一样,参考java. 3变量的概念,变量声明使用var ...

  4. 测试自动化学习3-python3简单操作

    1.列表操作 增 stu = []stus.append('lili') #在list的末尾增加一个元素 stus.insert(9,'yjk') #在指定的位置插入元素, 查 print('单个取, ...

  5. 允许浏览器下载exe.config文件

    进入系统目录 %windir%\System32\inetsrv\config\ 编辑IIS配置文件 applicationHost.config 找到如下行 <requestFiltering ...

  6. HFSS中查看增益

    第一步:设置查看增益条件  radiation 中设置 第二步设置扫描方式   下面的save fields 一定要勾选 第三步:扫描完成就可以查看了  results 中 查看   其中   phi ...

  7. JSTL将number类型转化为String类型

    <c:set var="lm1"> <c:out value="${lm}" /> </c:set>

  8. Postman代码测试工具如何用?

    1.  1)get请求,参数为map时, postman的传参 2)参数为基本数据类型的参数时 postman传参: 3)当参数在接口中动态获取时 postman传参: 2.  1)post请求,参数 ...

  9. 做一个有产品思维的研发:部署(Tomcat配置,Nginx配置,JDK配置)

    每天10分钟,解决一个研发问题. 如果你想了解我在做什么,请看<做一个有产品思维的研发:课程大纲>传送门:https://www.cnblogs.com/hunttown/p/104909 ...

  10. leetcode143. Reorder List

    用快慢双指针,可以使慢指针到达中间的时候快指针到达最后一个元素(奇数),或者倒数第二个元素(偶数).慢指针后面的元素是后半个链表,把后半个链表进行reverse,然后再插在原来的链表中就可以了 /** ...