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:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...
随机推荐
- 5m21d缓冲区溢出学习笔记
mysql链接字符串函数 concat(str1,str2) concat_ws(separator,str1,str2....) group_concat(str1,str2....) mysql的 ...
- C# 复选框显示多项选择
private void Form1_Load(object sender, EventArgs e) { checkedListBox1.Items.Add("语文"); che ...
- Lombok 介绍
Lombok使用 介绍 在项目中使用Lombok可以减少很多重复代码的书写.比如说getter/setter/toString等方法的编写. IDEA中的安装 打开IDEA的Setting –> ...
- ping vs telnet, what is the difference between them and when to use which?
Ping is an ICMP protocol. Basically any system with TCP/IP could respond to ICMP calls if they were ...
- SQL的几种连接:内连接、外连接(左连接、右连接、全连接)
表结构见前面博客 1.内连接 1.1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列. 三种写法: select * from t ...
- Windows下安装使用python的Flask框架
1.安装python环境: 这里就不赘述了. 2.安装virtualenv虚拟环境: 这里使用使用第三方工具 virtualenv 创建虚拟环境.虚拟环境的好处如下(摘录网络): “ 安装 Flask ...
- AndroidStudio中如何使用GsonFormat
转载:https://www.jianshu.com/p/3b82f42e5937 第一步: 找到AndroidStudio中得Prefrences的plugins的Browse repositori ...
- 爬虫下载校花网美女信息-lxml
# coding=utf-8 # !/usr/bin/env python ''' author: dangxusheng desc : 下载校花网上的个人信息:名字-学校-图片地址-点赞数 date ...
- 【git】强制覆盖本地代码(与git远程仓库保持一致)
git强制覆盖: git fetch --all git reset --hard origin/master git pull git强制覆盖本地命令(单条执行): git ...
- python 不知道是啥
1.判断两个大文件是否是同一个文件 import os import hashlib import time start = time.time() path1 = r"E:\视频资料\el ...