zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    const对象 不能调用非const修饰的成员函数
    Sqlserver 查询 临时字段
    win7 VC6.0 安装 fatal error C1083: Cannot open include file: 'Iphlpapi.h': No such file or directory
    RtlWerpReportException failed with status code :-1073741823
    MFC 去掉CWnd的边框
    阿里云 linux 找回mysql root密码
    IE 内使用ActiveX,写注册表被重定向到如下注册表
    mysqli得到记录数量
    error C4996 The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name
    在MFC主对话框OnInitDialog()中弹出对话框
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10816443.html
Copyright © 2011-2022 走看看