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"}]}
    

      

  • 相关阅读:
    简明Python3教程 12.问题解决
    简明Python3教程 11.数据结构
    【SPOJ 694】Distinct Substrings
    【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
    【CF Manthan, Codefest 17 B】Marvolo Gaunt's Ring
    【CF Manthan, Codefest 17 A】Tom Riddle's Diary
    【SPOJ 220】 PHRASES
    【POJ 3261】Milk Patterns
    【POJ 3294】Life Forms
    【POJ 1226】Substrings
  • 原文地址:https://www.cnblogs.com/pythonClub/p/10908386.html
Copyright © 2011-2022 走看看