flutter isolate demo
main.dart
import 'package:flutter/material.dart';
import 'package:flutter_isolate/flutter_isolate.dart';
import 'isolates.dart';
import 'dbhelper.dart'; void main() {
runApp(MaterialApp(
title: 'Flutter Demo',
initialRoute: '/',
routes: {
'/':(context)=>MyApp(),
'/second':(context)=>NextPage(),
},
));
} class MyApp extends StatefulWidget{
@override
State<StatefulWidget> createState() {
return MyAppState();
}
}
class MyAppState extends State<MyApp> {
FlutterIsolate isoltex;
DB db = DB(); addData()async{
var a = await db.addData('type', {'name':'11maintest'});
print(a);
} checkData()async{
var b = await db.queryData('SELECT * FROM type');
print(b);
}
@override
Widget build(BuildContext context) { return Scaffold(
appBar: AppBar(title: Text('sss'),),
body: Container(child: Column(
children: <Widget>[
RaisedButton(child: Text('addData'),onPressed: ()async{
addData();
},),
RaisedButton(child: Text('check data'),onPressed: ()async{
checkData();
},),
RaisedButton(child: Text('start'),onPressed: ()async{
isoltex = await createIsolate();
},),
RaisedButton(child: Text('pause'),onPressed: (){
isoltex.pause();
},),
RaisedButton(child: Text('resume'),onPressed: (){
isoltex.resume();
},),
RaisedButton(child: Text('kill'),onPressed: (){
isoltex.kill();
},),
RaisedButton(child: Text('go to next'),onPressed: (){
Navigator.of(context).pushNamed('/second');
},) ]),
),
);
}
} class NextPage extends StatelessWidget{
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('page2'),),
body: Container(
child: RaisedButton(child:Text('btn'),
onPressed: (){
print('hello');
}),
),
);
}
}
isolates.dart
import 'dbhelper.dart';
import 'package:flutter_isolate/flutter_isolate.dart';
import 'dart:async';
import 'dart:isolate'; Future<FlutterIsolate> createIsolate() async { ReceivePort receivePort = ReceivePort(); FlutterIsolate isolate = await FlutterIsolate.spawn(
isolateEntry,
receivePort.sendPort,
);
receivePort.listen((value){
print('from spawrn side: $value');
});
return isolate;
} isolateEntry(SendPort sendPort)async{ DB db = DB();
int i=0;
while (i<40){
var d = await db.addData('type', {'name':'$i'});
i++; sendPort.send('ok $d');
await Future.delayed(Duration(seconds: 1));
}
}
another https://blog.csdn.net/PD_Wang/article/details/80165265
flutter isolate demo的更多相关文章
- isolate demo
dependencies dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to yo ...
- flutter实战demo,仿luckin coffee。
flutter_luckin_coffee flutter luckin coffee application(仿瑞幸咖啡) 目录 前言 安卓扫码体验 flutter版本信息 安装 相关插件 维护者 ...
- Flutter异步与线程详解
一:前言 - 关于多线程与异步 关于 Dart,我相信大家都知道Dart是一门单线程语言,这里说的单线程并不是说Dart没有或着不能使用多线程,而是Dart的所有API默认情况下都是单线程的.但大家也 ...
- Flutter学习笔记(10)--容器组件、图片组件
如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 上一篇Flutter学习笔记(9)--组件Widget我们说到了在Flutter中一个非常重要的理念"一切皆为组件 ...
- flutter_boot android和flutter源码阅读记录
版本号0.1.54 看源码之前,我先去看下官方文档,对于其源码的设计说明,文中所说的原生都是指android 看完官方文档的说明,我有以下几个疑问 第一个:容器是怎么设计的? 第二个:native和f ...
- Flutter的布局方法
重点是什么? Widgets 是用于构建UI的类. Widgets 用于布局和UI元素. 通过简单的widget来构建复杂的widget Flutter布局机制的核心就是widget.在Flutter ...
- 在Flutter中构建布局
这是在Flutter中构建布局的指南.首先,您将构建以下屏幕截图的布局.然后回过头, 本指南将解释Flutter的布局方法,并说明如何在屏幕上放置一个widget.在讨论如何水平和垂直放置widget ...
- 基于 Redux + Redux Persist 进行状态管理的 Flutter 应用示例
好久没在 SegmentFault 写东西,唉,也不知道 是忙还是懒,以后有时间 再慢慢写起来吧,最近开始学点新东西,有的写了,个人博客跟这里同步. 一直都在自己的 React Native 应用中使 ...
- 如何在Flutter中使用flutter_markdown
很多博客,论坛都支持markdown语法,flutter也有支持markdown语法的插件flutter_markdown 安装依赖 dependencies: flutter: sdk: flutt ...
随机推荐
- 清理系统图标缓存数据库-解决windows图标异常
1.删除C:\Users\用户名\AppData\Local\IconCache.db文件,重建图标缓存 . 一键脚本 taskkill /f /im explorer.exe echo 清理系统图标 ...
- C# System.Net.Mail.MailMessage 发邮件
C# System.Net.Mail.MailMessage 发邮件 上篇文化在哪个可以看到使用 System.Web.Mail.MailMessage 发邮件时会提示 ,提供用于构造电子邮件的属性和 ...
- win7下查看进程端口
一. 查看所有进程占用的端口 在开始-运行-cmd,输入:netstat –ano 可以查看所有进程 二.查看占用指定端口的程序 当你在用tomcat发布程序时,经常会遇到端口被占用的情况,我们想知道 ...
- 文件分片 浏览器文件大小限制 自定义请求头 在一个资源的加载进度停止之后被触发 arrayBuffer 异步 二进制数据缓存区
js 整数限制 浏览器文件大小限制 https://w3c.github.io/FileAPI/#dom-blob-arraybuffer https://developer.mozilla.org/ ...
- [LeetCode] 495. Teemo Attacking 提莫攻击
In LOL world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned ...
- Postman系列三:Postman中post接口实战(上传文件、json请求)
一:接口测试过程中GET请求与POST请求的主要区别 从开发角度我们看get与post的主要区别是:1.Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据:2.Get安全性比Post低 ...
- LeetCode 503. 下一个更大元素 II(Next Greater Element II)
503. 下一个更大元素 II 503. Next Greater Element II 题目描述 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素.数字 ...
- GCC 基础知识
目录 GCC 基础知识 一.GCC编译选项解析 二.多模块.多个文件一起编译 三.静态库与动态库 四.查看帮助文档 GCC 基础知识 一.GCC编译选项解析 1. 常用编译选项 命令格式:gcc [选 ...
- Linux下的JMeter部署及使用
之前都是在windows环境使用JMeter,是有操作界面的.但是最近需要在Linux环境下使用,现将操作步骤记录下来 在安装JMeter之前,需要在Linux下安装JDK并配置环境变量,这里跳过 1 ...
- libevent实现对管道的读写操作
读管道: #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/t ...