isolate sqflite demo
main.dart
import 'package:flutter/material.dart';
import 'demo_isolates.dart';
import 'package:rxdart/rxdart.dart';
import 'dbhelper.dart';
import 'package:flutter_isolate/flutter_isolate.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
initialRoute: '/',
routes: {
'/':(context)=>MyHome(),
'/second':(context)=>SecondPage(),
},
);
}
} class MyHome extends StatelessWidget{
DataBloc dataBloc = DataBloc();
FlutterIsolate isolate;
DB db = DB(); checkData()async{
var a = await db.queryData('SELECT * FROM type');
print(a);
} @override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('sss'),),
body: Container(child: Column(
children: <Widget>[
StreamBuilder(
stream: dataBloc.dataBloc.stream,
builder: (context, snapshot){
if(snapshot.hasData){
return Text('${snapshot.data}');
}else{
return Text('pending');
}
},
),
RaisedButton(child: Text('start'),onPressed: ()async{
isolate = await spawnIsolate('abc', dataBloc);
},),
RaisedButton(child: Text('stop'),onPressed: (){
isolate.kill();
},),
RaisedButton(child: Text('check'),onPressed: (){
checkData();
},),
RaisedButton(child: Text('go to 2'),onPressed: (){
Navigator.of(context).pushNamed('/second');
},),
],
),),
);
}
} class SecondPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('second page'),),
body: Container(child: Center(child: Text('second'),),),
);
}
} class DataBloc {
ReplaySubject dataBloc = ReplaySubject();
}
demo_isolates.dart
import 'dart:async';
import 'dart:isolate';
import 'dbhelper.dart';
import 'main.dart';
import 'package:flutter_isolate/flutter_isolate.dart'; Future<FlutterIsolate> spawnIsolate(String type, DataBloc bloc) async {
ReceivePort receivePort = new ReceivePort();
ReceivePort listenPort = ReceivePort();
FlutterIsolate isolate = await FlutterIsolate.spawn(dartIsolateLongRunningOperation, receivePort.sendPort);
SendPort t = await receivePort.first;
t.send({'sender':listenPort.sendPort, 'msg':type}); listenPort.listen((data){
bloc.dataBloc.add(data);
});
return isolate;
} void dartIsolateLongRunningOperation(SendPort sendPort) async {
ReceivePort port = ReceivePort();
sendPort.send(port.sendPort);
port.listen((data)async{
await doWork(data['msg'], data['sender']);
});
} Future doWork(String type, SendPort sender)async{
DB db = DB();
int i = 0;
while(i<30){
var a = await db.addData('type', {'name':'$i'});
sender.send('id: $a');
i++;
await Future.delayed(Duration(seconds: 1));
} }
isolate sqflite demo的更多相关文章
- self sqflite sample =======================
import 'package:path_provider/path_provider.dart'; import 'dart:async'; import 'package:flutter/mate ...
- isolate demo
dependencies dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to yo ...
- flutter isolate demo
main.dart import 'package:flutter/material.dart'; import 'package:flutter_isolate/flutter_isolate.da ...
- iOS苹果官方Demo合集
Mirror of Apple’s iOS samples This repository mirrors Apple’s iOS samples. Name Topic Framework Desc ...
- Flutter数据库Sqflite之增删改查
Flutter数据库Sqflite之增删改查 简介 sqflite是Flutter的SQLite插件,支持iOS和Android,目前官方版本是sqflite1.1.3 sqflite插件地址:h ...
- 理解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) 包含网址的 二维码生成 是大家平时最常接触 ...
随机推荐
- 2019_软工实践_Beta(5/5)
队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 部署新服务器 展示GitHub当日代码/文档签入记录 接下来的计划 准备 ...
- 论文解读:3D Hand Shape and Pose Estimation from a Singl RGB Image
本文链接:https://blog.csdn.net/williamyi96/article/details/89207640由于最近做到了一些 3D Hand Pose Estimation 相关的 ...
- nfs高可用
一.简介 NFS是单点的,如果一个节点出现问题,那使用它挂载服务的都将出现问题.所以需要高可用,挂掉一台不影响.采用keepalived+rsync+inotify-tools 环境: ubunt ...
- Ubuntu下root账户无法使用xshell远程连接解决方法
以前使用xshell连接服务器跑程序都很顺利,但这次整了一个root账户,发现居然连不上.百度一下,发现ubuntu系统本身是拒绝root账户远程连接的. 解决办法:参考点击传送门
- MSYS2 更新源
博客转载自:https://blog.csdn.net/puputaoexin/article/details/81780492 在使用msys2下载文件的时候回出现下载速度奇慢,且经常因为各种原因报 ...
- python初级(302) 2 easygui简单使用
一.复习之前的两个练习,巩固计数循环和条件循环 1.系统生成一个随机数1到5,然后让用户的猜测,若猜对了,提示恭喜你,猜对了,否则提示,对不起,你猜错了(提示,1到5的随机数为:secret = ra ...
- [LeetCode] 555. Split Concatenated Strings 分割串联字符串
Given a list of strings, you could concatenate these strings together into a loop, where for each st ...
- Node.js 多线程完全指南
[原文] 很多人都想知道单线程的 Node.js 怎么能与多线程后端竞争.考虑到其所谓的单线程特性,许多大公司选择 Node 作为其后端似乎违反直觉.要想知道原因,必须理解其单线程的真正含义. Jav ...
- python:当文件中出现特定字符串时执行robot用例
#coding:utf-8 import os import datetime import time def execute_rpt_db_full_effe_cainiao_city(): fla ...
- Kubernetes 健康状态检查(九)
强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness 探测机制设置更精 ...