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. spring boot 加载application配置文件

    这就要注意了

  2. 1 开发环境 eclipse oomph版本 jdk1.8 lucene 6.6.0,luke6.6.0

    第一个jar  是分词器,后面的是lucene  解压出来的 路径如下: lucene-analyzers-common-6.6.0.jar:lucene-6.6.0/common/ lucene-a ...

  3. PCB布局布线

    1.关键芯片的物理位置,明细信号流向,防止关键信号交叉,高速线布线通畅. 2.可装配,可维修,可测试. 3.模拟电路和数字电路分区摆放. 4.疏密有序. 5.原理图应该明确主芯片周边元件的布局要求. ...

  4. PHP Xdebug + PhpStorm调试远程服务器代码

    1.服务器(linux centos)安装xdebug pecl install xdebug 注意看安装完成之后会显示 debug.so 的路径,记录下来 2.配置 php.ini如果不知道php. ...

  5. nodejs 使用superagent+cheerio+eventproxy爬取豆瓣帖子

    //cnpm install superagent cheerio eventproxy fs pathvar superagent = require('superagent'); var chee ...

  6. Sybase IQ 的基础

    Sybase IQ 的基础   Sybase IQ的一些基础总结: 1.IQ跟其它的关系型数据库相比,它的主要特征是:查询快.数据压缩比高.Load快,但是插入更新慢,不太适应数据老是变化,它是按列存 ...

  7. SSZipArchive解压乱码

    https://www.twblogs.net/a/5b7e01e22b7177683854b7b8/zh-cn 搜索   CFStringConvertEncodingToNSStringEncod ...

  8. LeetCode 653 Two Sum IV - Input is a BST 解题报告

    题目要求 Given a Binary Search Tree and a target number, return true if there exist two elements in the ...

  9. Map集合转成json数据

    maven项目需要导入一下依赖: <dependency> <groupId>net.sf.json-lib</groupId> <artifactId> ...

  10. python 判断字符串是否为(或包含)IP地址

    下面是某个字符串是否为IP地址import re def isIP(str): p = re.compile('^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5 ...