微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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));
  }
}

  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐