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

  

aria2 adduri的更多相关文章

  1. test aria2 on windows platform

    import 'dart:io'; import 'dart:convert'; import 'package:path/path.dart'; import 'package:web_socket ...

  2. aria2 资料

    https://www.jianshu.com/p/8124b5b6ef95https://quan.ithome.com/0/331/853.htmhttp://www.360doc.com/con ...

  3. python3 使用aria2下载的一个脚本

    import requests import time ariaurl="http://localhost:6800/jsonrpc" dlurl="http://xxx ...

  4. aria2使用ajax调用/页面浏览器RPC调用aria2

    @ 目录 1. aria2使用ajax调用/页面浏览器RPC调用aria2 1.1. 总结: 1.2. ajax调用aria2-Demo 1.3. postMan命令测试 1.3.1. post基本使 ...

  5. m3u8文件下载合并的一种方法

    # -*- coding: utf-8 -*- """ Created on Wed Mar 14 15:09:14 2018 @author: Y "&quo ...

  6. 一个用python简单的封装了aria2的jsonrpc中adduri的脚本

    aria2是一个十分牛逼的下载神器,有时候项目需要一个很牛逼的下载中间件的话,aria2是一个不错的选择.其中支持jsonrpc和websocket的特性尤其诱人.但是python用起来还是有点不爽, ...

  7. ubuntu下载工具uget和aria2

    一直想在ubuntu下找到个和迅雷差不多的下载工具.在网上找到了. 这篇文章完全是抄袭整理网上的. 我的系统版本是ubuntu14.04. 1.安装uget和aria2 sudo apt-get in ...

  8. Centos6.4 aria2 webui-aria2

    wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm rpm -ivh ...

  9. Mac Aria2 使用Privoxy将socks代理转化为http代理

    安装Privoxy 打开终端安装privoxy来实现这里我是通过brew来进行的安装 brew install privoxy 看到这行已经安装成功 ==> Caveats To have la ...

随机推荐

  1. [Beta阶段]测试报告

    [Beta阶段]测试报告 博客目录 测试方法及过程 在正式发布前,为检验后端各接口功能的正确性,后端服务器对压力的耐受程度,以及前端各页面.功能的运行情况,我们对我们的服务器及小程序进行了多种测试.除 ...

  2. Scrum Meeting 博客汇总

    Scrum Meeting 博客汇总 一.Scrum Meeting 1. Alpha 第一次 Scrum Meeting 第二次 Scrum Meeting 第三次 Scrum Meeting 第四 ...

  3. Spring Boot通过Configuration配置多数据源

    本文结合SpringBoot + MyBatis + MySql进行多数据源配置,DataSource信息采用自定义dataSource.properties进行配置. 1.文件结构如下: 2.1 p ...

  4. MyBatis(六):Mybatis Java API编程实现一对多、一对一

    最近工作中用到了mybatis的Java API方式进行开发,顺便也整理下该功能的用法,接下来会针对基本部分进行学习: 1)Java API处理一对多.多对一的用法: 2)增.删.改.查的用法: 3) ...

  5. In Vitro model验证 | Harnessing single-cell genomics to improve the physiological fidelity of organoid-derived cell types

    Transcriptional benchmarking of in vitro cells to in vivo with single-cell rna-seq - 简介 Harnessing s ...

  6. Android之WebRTC介绍

    参考自:Introduction to WebRTC on AndroidAndroid之WebRTC介绍 WebRTC被誉为是web长期开源开发的一个新启元,是近年来web开发的最重要创新.WebR ...

  7. vmware新加磁盘fdisk看不到的处理

    虚拟机硬盘空间不够了,做了lvm准备加块硬盘扩容,在vcenter控制台加了磁盘,结果操作系统里面fdisk -l看不到新加的硬盘,又不想重启怎么办,一条命令就可以搞定. # 注意中间有空格echo ...

  8. python 一般处理

    #!/usr/bin/env python# -*- coding:utf-8 -*-# Author:afei# QQ:97259460# date = 2019/8/29 s_code1=''s_ ...

  9. 华硕主板 Vmware虚拟机 二进制转换与此平台上的长模式不兼容

    出现情况如下: 大概遇到过两次这个问题,第一次是在笔记本VM上装虚拟机,第二次是在台式机VM上装虚拟机. 原因是因为虚拟化(Intel Virtualization Technology)技术,在主板 ...

  10. robotframework启动ride失败,提示wxpython ImportError: DLL load failed: 找不到指定的模块

    背景:按照rf的操作,安装是没有问题,就是在启动ride.py 这个文件,就有问题了,提示 wxpython ImportError: DLL load failed: 找不到指定的模块 在pytho ...