• 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

  • 相关阅读:
    leetcode 39 Combination Sum
    C/C++ 单元测试 catch
    二叉树
    线性表
    POJ1002
    HDU4329
    hdu 4329
    java代码优化总结1
    Linux操作系统常用命令总结1
    java开发基础知识总结1
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10816443.html
Copyright © 2020-2023  润新知