flutter isolate demo
2024-08-20 10:05:20
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
最新文章
- 初识WEB:输入URL之后的故事
- MySQL索引原理及慢查询优化 转载
- python pexpect 学习与探索
- Hibernate,JPA注解@OneToMany_Set
- PMP考试--关于职业道德
- map的两种取值方式
- [Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
- 教你看懂邮件头信息<;转载>;
- SGU 168.Matrix
- linux mount命令学习
- java中怎么解决路径中文的问题
- Linux查看文件最后几行的命令,日志的福音啊
- php的ob函数实现页面静态化
- ASP.NET 使用Session,避免用户F5刷新时重复提交(转)
- 第45章:MongoDB-集群--Sharding(分片)--分片的管理
- linux驱动开发(四) 字符设备驱动框架(自动创建设备节点)
- shell 网络状态查询 ping curl telnet
- Perl中的哈希(四)
- vi如何修改注释颜色
- (2.5)DDL增强功能-触发器trigger
热门文章
- fastJson反序列化参数为null的问题
- 使用良好的自定义X264编码,取得极佳质量!《转》
- Unity3D特效入门教学视频教程合集
- P1981 表达式求值
- hive中function函数查询
- Android : Camera HAL3的参数传递(CameraMetadata)
- 泡泡一分钟:BLVD: Building A Large-scale 5D Semantics Benchmark for Autonomous Driving
- Spring cloud微服务安全实战-7-9自定义日志采集的格式和内容
- DateUtil(2)
- 转 mysql 备份导致 waiting for global read lock