zoukankan      html  css  js  c++  java
  • aria2 adduri

    demo, ok

    import 'package:flutter/material.dart';
    import 'package:permission_handler/permission_handler.dart';
    import 'package:flutter/services.dart';
    import 'dart:io';
    import 'package:path/path.dart';
    import 'package:path_provider/path_provider.dart';
    import 'package:json_rpc_2/json_rpc_2.dart' as json_rpc;
    import 'package:stream_channel/stream_channel.dart';
    import 'dart:io';
    import 'package:web_socket_channel/web_socket_channel.dart';
    import 'package:web_socket_channel/io.dart';
    import 'dart:convert';
    
    void main() => runApp(MaterialApp(
      home: MyApp(),
    ));
    
    
    class MyApp extends StatefulWidget {
    
      @override
      State<StatefulWidget> createState() {
        return MyAppState();
      }
    }
    
    class MyAppState extends State<MyApp> {
      var permit;
      Directory setupPath;
      Directory sdCard;
      File aria2Main;
      IOWebSocketChannel channel;
    
      checkPermission()async{
        permit = await PermissionHandler().checkPermissionStatus(PermissionGroup.storage);
        if(permit!=PermissionStatus.granted){
          await PermissionHandler().requestPermissions([PermissionGroup.storage]);
        }
      }
    
      setupFile()async{
        setupPath = await getApplicationDocumentsDirectory();
        aria2Main = File(join(setupPath.path, 'aria2'));
        bool existFile = await aria2Main.exists();
        if(!existFile) {
          print('no exist so to create it');
        var aria2File = await rootBundle.load('assets/aria2c');
        var aria2FileBuf = aria2File.buffer;
        aria2Main.writeAsBytesSync(aria2FileBuf.asUint8List());
    
        await Process.run('chmod', ['755', aria2Main.path]).then((e) {
          print(e.stdout);
          print(e.stderr);
          print(e.exitCode);
        });
        }
    
        var configFile = await rootBundle.load('assets/aria2.conf');
        var confbuf = configFile.buffer;
        File(join(setupPath.path, 'aria2.conf')).writeAsBytesSync(confbuf.asUint8List());
    
        print('start servicess rpc:');
        await Process.run(aria2Main.path, ['--conf-path=${setupPath.path}//aria2.conf']).then((e){
          print(e.stdout);
          print(e.stderr);
          print(e.exitCode);
        });
      }
    
      startService()async{
        channel = IOWebSocketChannel.connect('ws://localhost:6800/jsonrpc');
        channel.stream.listen((data){
          print('data: $data');
        });
      }
    
      downloadFile()async{
        sdCard = await getExternalStorageDirectory();
        String url = 'http://speed.189.cn/upload/BSSAClientSetup9.exe';
        Map xx = {"jsonrpc":"2.0","id":"m","method":"aria2.addUri","params":[["$url"]]};
        channel.sink.add(json.encode(xx));
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(title: Text('Aria2'),),
          body: Container(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.center,
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: <Widget>[
                RaisedButton(child: Text('checkPermission'),onPressed: (){
                  checkPermission();
                },),
                RaisedButton(child: Text('setupFile'),onPressed: (){
                  setupFile();
                },),
                RaisedButton(child: Text('start service'),onPressed: (){
                  startService();
                },),
                RaisedButton(child: Text('Download'),onPressed: (){
                  downloadFile();
                },),
              ],
            ),
          ),
        );
      }
    }
    

      

    V/BoostFramework(13547): BoostFramework() : mPerf = com.qualcomm.qti.Performance@667a10e
    I/flutter (13547): start servicess rpc:
    I/flutter (13547): data: {"id":"m","jsonrpc":"2.0","result":"3a85b5cc8bda8388"}
    I/flutter (13547): data: {"jsonrpc":"2.0","method":"aria2.onDownloadStart","params":[{"gid":"3a85b5cc8bda8388"}]}
    I/flutter (13547): data: {"jsonrpc":"2.0","method":"aria2.onDownloadComplete","params":[{"gid":"3a85b5cc8bda8388"}]}
    

      

  • 相关阅读:
    windows编程:第一个windows程序
    百度地图API多个点聚合时,标注添加的标签label地图刷新就丢失的问题解决
    在WPF的WebBrowser控件中屏蔽脚本错误的提示
    使用SQL语句逐条更新每条记录
    通过 HDU 2048 来初步理解动态规划
    一个乱码问题
    2、设置配置文件
    1、搭建 maven 环境
    MyBatis 缓存机制
    关于 Mybatis 设置懒加载无效的问题
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10908386.html
Copyright © 2011-2022 走看看