当前位置: 首页 > news >正文

网站的黄金看盘软件网站服务器怎么收费

网站的黄金看盘软件,网站服务器怎么收费,360浏览器打开是2345网址导航,哪个网站做的系统好用吗简介 Flutter是一种由Google开发的移动应用程序开发框架,它允许开发人员使用单个代码库构建高性能、高质量的移动体验。而Android终端命令行工具则允许用户在Android手机上运行类似于Linux的操作系统命令。本文的目的是介绍如何在Flutter应用中开发一个Android终端命…

简介
Flutter是一种由Google开发的移动应用程序开发框架,它允许开发人员使用单个代码库构建高性能、高质量的移动体验。而Android终端命令行工具则允许用户在Android手机上运行类似于Linux的操作系统命令。本文的目的是介绍如何在Flutter应用中开发一个Android终端命令行工具,包括终端命令行页面的布局设计、与Shell通信的基本原理、输入输出处理的基本技巧、终端样式和输出样式的可配置性,以及如何在具体应用中利用终端命令行工具来执行系统命令和与用户进行交互。
实现终端命令行页面
为了实现一个完整的终端命令行页面,我们可以使用Flutter提供的基础控制台模块,例如TextArea、TextField等。需要注意的是,在Android中Shell是另一个进程,我们需要使用Flutter提供的方法来与Shell进行通信。具体来说,我们可以通过创建一个Future或者Stream来与Shell进行通信。其中Future用于单个结果的返回,而Stream则可以返回多个结果。我们可以在Flutter使用Async函数和这些模块的onChanged()方法来处理输入和输出。以下是最简单的实现方式。
dart复制代码

class TerminalPage extends StatefulWidget {_TerminalPageState createState() => _TerminalPageState();
}class _TerminalPageState extends State<TerminalPage> {TextEditingController _controller;Future<Process> _process;Stream<String> _output;void initState() {super.initState();_controller = TextEditingController();_process = Process.start('/system/bin/sh', []);_controller.addListener(_handleInput);}void _handleInput() {_process.then((process) {process.stdin.writeln(_controller.text);_controller.clear();});}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Terminal Command"),),body: Column(children: [Flexible(flex: 1,child: StreamBuilder<String>(stream: _output,builder: (BuildContext context, AsyncSnapshot<String> snapshot) {if (snapshot.hasData) {return Text(snapshot.data);} else {return CircularProgressIndicator();}},),),TextField(controller: _controller,decoration: InputDecoration(border: InputBorder.none, hintText: "Input terminal command"),)],),);}
}

终端样式和输出样式的设计
除了基本的终端命令行页面,我们也需要为终端和输出样式提供更多的可配置性。在Flutter中,我们可以使用TextStyle模块(例如,color、fontSize、fontFamily等)来控制终端和输出的样式。我们可以将TextStyle保存在Flutter的本地存储中,以便在应用中进行修改。以下是一个具体的样例:
dart复制代码

 class _TerminalPageState extends State<TerminalPage> {TextEditingController _controller;Future<Process> _process;Stream<String> _output;TextStyle _terminalStyle;TextStyle _outputStyle;void initState() {super.initState();_controller = TextEditingController();_process = Process.start('/system/bin/sh', []);_terminalStyle = TextStyle(color: Colors.white, backgroundColor: Colors.black, fontFamily: 'Monospace');_outputStyle = TextStyle(color: Colors.white, backgroundColor: Colors.black, fontSize: 16);_controller.addListener(_handleInput);}void _handleInput() {_process.then((process) {process.stdin.writeln(_controller.text);_controller.clear();});}Future<File> _getTerminalStyleFile() async {final directory = await getApplicationDocumentsDirectory();final file = File('${directory.path}/terminalStyle');if (file.existsSync()) {return file;} else {await file.create();await file.writeAsString('{"color": "#FFFFFF", "background": "#000000"}');return file;}}Future<File> _getOutputStyleFile() async {final directory = await getApplicationDocumentsDirectory();final file = File('${directory.path}/outputStyle');if (file.existsSync()) {return file;} else {await file.create();await file.writeAsString('{"color": "#FFFFFF", "background": "#000000", "size": 16}');return file;}}Future<void> _loadStyles() async {final terminalFile = await _getTerminalStyleFile();final terminalJson = await terminalFile.readAsString();final terminalStylesMap = jsonDecode(terminalJson);_terminalStyle = TextStyle(color: Color(int.parse(terminalStylesMap['color'].toString(), radix: 16)),backgroundColor: Color(int.parse(terminalStylesMap['background'].toString(), radix: 16)),fontFamily: 'Monospace',);final outputFile = await _getOutputStyleFile();final outputJson = await outputFile.readAsString();final outputStylesMap = jsonDecode(outputJson);_outputStyle = TextStyle(color: Color(int.parse(outputStylesMap['color'].toString(), radix: 16)),backgroundColor: Color(int.parse(outputStylesMap['background'].toString(), radix: 16)),fontSize: outputStylesMap['size'].toDouble(),);}Future<void> _saveTerminalStyle(String color, String background) async {final terminalFile = await _getTerminalStyleFile();final terminalStylesMap = {"color": color, "background": background};final terminalJson = jsonEncode(terminalStylesMap);await terminalFile.writeAsString(terminalJson);}Future<void> _saveOutputStyle(String color, String background, double size) async {final outputFile = await _getOutputStyleFile();final outputStylesMap = {"color": color, "background": background, "size": size.toInt()};final outputJson = jsonEncode(outputStylesMap);await outputFile.writeAsString(outputJson);}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Terminal Command"),),body: FutureBuilder(future: _loadStyles(),builder: (BuildContext context, AsyncSnapshot<void> snapshot) {switch (snapshot.connectionState) {case ConnectionState.done:return Column(children: [Flexible(flex: 1,child: StreamBuilder<String>(stream: _output,builder: (BuildContext context, AsyncSnapshot<String> snapshot) {if (snapshot.hasData) {return Text(snapshot.data, style: _outputStyle);} else {return CircularProgressIndicator();}},),),TextField(style: _terminalStyle,controller: _controller,decoration: InputDecoration(border: InputBorder.none,hintText: "Input terminal command",hintStyle: _terminalStyle,),)],);default:return Center(child: CircularProgressIndicator());}},),);}}

在Flutter应用中使用终端命令行工具的例子
在具体应用中,我们可以使用终端命令行工具来执行一些系统命令,例如ping、df、top等。同时,我们也可以利用终端界面来与用户进行交互,例如读取用户的输入并将其传递给后端服务器。以下是一个简单的应用案例:
dart复制代码

class PingPage extends StatelessWidget {final String ip;PingPage({Key key, this.ip}) : super(key: key);Future<Process> _getPingProcess() async {final process = await Process.start('/system/bin/ping', ['-c', '5', ip]);return process;}Widget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text("Ping $ip")),body: Container(child: FutureBuilder(future: _getPingProcess(),builder: (BuildContext context, AsyncSnapshot<Process> snapshot) {if (snapshot.hasData) {return Column(children: [Expanded(child: TerminalOutput(process: snapshot.data),),Container(margin: EdgeInsets.all(10),child: TextField(decoration: InputDecoration(border: OutlineInputBorder(),hintText: 'Input Ping Command',),),),Container(margin: EdgeInsets.all(10),child: ElevatedButton(onPressed: () {},child: Text("Send Command"),),)],);} else {return Center(child: CircularProgressIndicator());}},),),);}
}class TerminalOutput extends StatelessWidget {final Process process;TerminalOutput({Key key, this.process}) : super(key: key);Widget build(BuildContext context) {return StreamBuilder<String>(stream: process.stdout.transform(utf8.decoder),builder: (BuildContext context, AsyncSnapshot<String> snapshot) {if (snapshot.hasData) {return SingleChildScrollView(child: Text(snapshot.data,style: TextStyle(color: Colors.white,fontFamily: 'Monospace',backgroundColor: Colors.black,),),);} else {return Center(child: CircularProgressIndicator());}},);}
}

总结
本文介绍了在Flutter应用中开发Android终端命令行工具的方法。主要包括终端命令行页面的布局设计、与Shell通信的基本原理、输入输出处理的基本技巧、终端样式和输出样式的可配置性,以及如何在具体应用中利用终端命令行工具来执行系统命令和与用户进行交互。
本文提供了一个完整的演示案例,包括输出和输入的显示、终端命令行页面的开发、以及关于终端样式为可配置的,输出样式也为可配置的。希望这篇文章对于Flutter开发者有所帮助,能够为他们在实际开发中提供参考。
除了本文所介绍的方法外,还有其他方法可以在Flutter应用中实现终端命令行工具,例如使用Dart的Process类进行进程调用,或者将Flutter应用封装为Docker容器。这些方法也值得开发者进一步探索和试验。未来,随着移动应用越来越复杂,终端命令行工具的需求也会越来越大。因此,掌握Flutter中开发终端命令行工具的技能将会变得越来越重要。

链接:https://juejin.cn/post/7248827630865596474

http://www.yayakq.cn/news/908021/

相关文章:

  • 网站首页适配规则成都 网站建设 app 开发
  • 免费建网站哪个模板多一个简单网页的代码
  • 电子商务网站建设与管理感想和收获免费网站建站排行榜
  • 必须在当地网站备案东莞视频网站制作
  • 建站模板 discuz游戏网站怎么做seo
  • 金山做网站建站时候源码有验证怎么办
  • 百度seo优化排名软件网站优化优化怎么做
  • 黄圃网站建设中高风险区域最新名单
  • 做设计在哪个网站上找高清图片岳阳建设局网站
  • 网站建站的尺寸seo诊断书案例
  • 网站一级域名和二级域名wordpress会员制
  • 龙岗网站建设哪家便宜深圳交易服务中心官网
  • j动态加载网站开发温州网站开发
  • 网站首页代码怎么写做汽车网可参考网站
  • 网站建设需求分析班级扁平化风格网站模板
  • 做线上网站的目的重庆建设工程交易中心
  • html5网站源码phppinthis wordpress
  • 东莞常平美食唐山网站关键词优化
  • 网站策划内容极品教师韩剧在线观看第一集
  • 杭州网站推广营销深圳网络推广服务是什么
  • 外贸网站建设服务器服务器iis添加网站
  • 江苏建筑网站什么样企业需要网站建设
  • app网站模板下载不了网站中常用的功能模块
  • 网站本身对网站打开速度有何影响珠海市网站建设公司
  • 龙岗在线网站制作郑州网站权重
  • 青岛建设投资公司网站新云网站模板
  • 可以文章上传视频的wordpress主题河南网站推广优化公司
  • 怎样查询江西省城乡建设厅网站软文推广发稿平台
  • 网站建设公开儒枫网网站建设
  • 安徽建筑大学城市建设学院网站深圳南山网站开发