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

解锁Flutter中的ProcessResult:让外部命令执行变得轻松

介绍

在我们的编程世界中,有时候我们需要与外部系统或者命令行交互。这就像在一场迷宫中寻找出口一样,我们需要向迷宫的门口询问正确的道路。而在 Flutter 中,这个问路的过程就是通过 ProcessResult 来实现的。

为什么要使用 ProcessResult?

想象一下你正在编写一个 Flutter 应用程序,你需要执行一些系统命令,比如创建文件、运行脚本或者调用一些第三方工具。这时候,ProcessResult 就像是你的通行证,它让你可以与系统进行交互,执行命令,并获取命令执行的结果。就像在探险中,你需要一把钥匙来打开未知的门,ProcessResult 就是你的万能钥匙,让你能够探索更多的可能性。

ProcessResult 是什么?

ProcessResult 是 Flutter 中的一个类,它代表了一个外部进程的执行结果。它就像是一封信,告诉你你的请求被处理了,并给你回复。这封信里包含了很多信息,比如这个进程是否成功执行、执行结果的输出内容以及执行结果的状态码。简单来说,ProcessResult 就是你与外部系统通信的桥梁,它帮助你执行命令,并将执行结果反馈给你,让你能够根据结果进行后续操作。

在我们的编程旅程中,ProcessResult 就像是一位忠实的向导,帮助我们穿越未知的领域,探索新的可能性。在接下来的探索中,我们将深入了解 ProcessResult,掌握它的使用方法,并发现它在 Flutter 应用程序开发中的重要性和价值。

ProcessResult 的属性和方法

让我们深入了解一下 ProcessResult,看看它都有哪些属性和方法,以及它们如何帮助我们执行外部命令并获取结果。

返回码(exitCode)

首先,让我们来了解一下返回码。在执行外部命令后,系统会返回一个数字作为结果,这个数字就是返回码。通常情况下,返回码为 0 表示命令执行成功,非零值表示命令执行失败或出现异常。就像一场探险,你探索的每一个地方都会留下痕迹,而返回码就像是你在地图上的标记,告诉你你走过了哪些路线,遇到了哪些挑战。

import 'dart:io';void main() async {ProcessResult result = await Process.run('ls', ['-l']);print('返回码: ${result.exitCode}');
}

标准输出(stdout)

其次,让我们看看标准输出。在执行命令后,命令可能会产生一些输出,这些输出会被称为标准输出。这些输出可以是一些消息、警告或者结果数据。就像是你在探险途中看到的风景,标准输出就像是你眼中的风景,让你了解外部命令执行的情况。

import 'dart:io';void main() async {ProcessResult result = await Process.run('ls', ['-l']);print('标准输出: ${result.stdout}');
}

标准错误(stderr)

还有一个重要的属性是标准错误。与标准输出类似,标准错误包含了命令执行中产生的错误信息。当命令执行出现问题时,错误信息会被发送到标准错误中。就像是你在探险中遇到的危险,标准错误就像是你遇到的危险警告,提醒你注意可能的危险和错误。

import 'dart:io';void main() async {ProcessResult result = await Process.run('ls', ['nonexistent_file']);print('标准错误: ${result.stderr}');
}

ProcessResult 的其他属性和方法

除了上面介绍的属性之外,ProcessResult 还有其他一些有用的属性和方法,比如 pid 属性可以获取执行命令的进程 ID,kill() 方法可以用来终止执行命令的进程。这些属性和方法可以让我们更加灵活地控制和处理外部命令的执行。

import 'dart:io';void main() async {ProcessResult result = await Process.run('ls', ['-l']);print('进程 ID: ${result.pid}');// 终止执行命令的进程result.kill();
}

通过了解和使用这些属性和方法,我们可以更好地理解外部命令的执行过程,并且根据执行结果进行相应的处理和控制,让我们的 Flutter 应用程序变得更加强大和灵活。

使用场景

在现实生活中,我们经常需要与外部系统或者命令行进行交互,比如运行脚本、调用第三方工具或者执行一些系统命令。在 Flutter 中,我们可以利用 ProcessResult 来实现这些功能,让我们看看它的两个主要使用场景。

执行外部命令

想象一下,你正在开发一款 Flutter 应用程序,你需要在用户设备上执行一些外部命令,比如创建文件、安装软件或者运行脚本。这时候,ProcessResult 就像是你的魔法棒,它可以帮助你调用系统命令并执行它们。就像是你需要打开一扇大门,而 ProcessResult 就是你的钥匙,让你可以轻松地打开门户,进入新的领域。

import 'dart:io';void main() async {// 执行外部命令,比如列出当前目录下的文件列表ProcessResult result = await Process.run('ls', ['-l']);// 打印命令执行的结果print(result.stdout);
}

处理外部命令的输出

另一个常见的使用场景是处理外部命令的输出。执行外部命令后,我们通常会获取到一些输出信息,比如命令执行的结果、警告信息或者错误信息。这时候,我们可以利用 ProcessResult 中的属性来获取这些信息,并根据需要进行处理。就像是你在旅途中遇到了一些挑战,而 ProcessResult 就像是你的向导,帮助你解决问题,顺利完成旅程。

import 'dart:io';void main() async {// 执行外部命令,比如查找某个文件ProcessResult result = await Process.run('find', ['.', '-name', 'example.txt']);// 获取命令执行的结果String output = result.stdout;if (output.isNotEmpty) {print('找到了文件:$output');} else {print('未找到文件!');}
}

通过这些使用场景的介绍,我们可以看到 ProcessResult 在 Flutter 应用程序开发中的重要性和价值。它可以帮助我们与外部系统进行交互,执行命令,并处理命令的输出,让我们的应用程序变得更加灵活和强大。

示例代码

调用外部命令并获取结果

让我们通过一个简单的示例来演示如何调用外部命令并获取结果。假设我们需要在 Flutter 应用程序中执行 ls -l 命令来列出当前目录下的文件列表,并将结果打印出来。

import 'dart:io';void main() async {// 执行外部命令,列出当前目录下的文件列表ProcessResult result = await Process.run('ls', ['-l']);// 获取命令执行的结果String output = result.stdout;// 打印命令执行的结果print('文件列表:\n$output');
}

在这个示例中,我们使用 Process.run 方法来执行外部命令,参数为命令名称和命令参数的列表。然后,我们通过 result.stdout 属性获取命令执行的结果,并将结果打印出来。这样,我们就可以在 Flutter 应用程序中调用外部命令并获取结果了。

处理 ProcessResult 的示例

除了获取标准输出之外,我们还可以处理 ProcessResult 中的其他属性,比如标准错误信息。让我们通过一个示例来演示如何处理外部命令的错误信息。

import 'dart:io';void main() async {// 执行外部命令,尝试读取一个不存在的文件ProcessResult result = await Process.run('cat', ['nonexistent_file']);// 获取标准错误信息String error = result.stderr;if (error.isNotEmpty) {print('错误信息:$error');} else {print('命令执行成功!');}
}

在这个示例中,我们使用 Process.run 方法执行外部命令 cat nonexistent_file,尝试读取一个不存在的文件。然后,我们通过 result.stderr 属性获取标准错误信息,并判断是否为空。如果标准错误信息不为空,则打印错误信息;否则,打印命令执行成功的消息。

通过这些示例,我们可以更好地理解如何在 Flutter 应用程序中调用外部命令,并处理命令执行的结果。这将为我们开发功能丰富的应用程序提供更多可能性和灵活性。

进阶用法

在实际应用中,我们可能会遇到需要异步执行外部命令的情况,以及处理外部命令执行过程中可能出现的错误和异常。让我们来看看如何使用 ProcessResult 来处理这些情况。

异步执行外部命令

有时候,我们可能需要在 Flutter 应用程序中异步执行外部命令,以避免阻塞主线程。比如,在执行耗时的命令或者需要等待结果返回的情况下,我们可以使用 Process.start 方法来实现异步执行。

import 'dart:io';void main() async {// 异步执行外部命令,比如运行一个长时间的脚本Process process = await Process.start('python', ['long_script.py']);// 监听命令的标准输出process.stdout.transform(utf8.decoder).listen((data) {print('标准输出:$data');});// 监听命令的标准错误process.stderr.transform(utf8.decoder).listen((data) {print('标准错误:$data');});// 等待命令执行完成int exitCode = await process.exitCode;print('命令执行完成,返回码:$exitCode');
}

在这个示例中,我们使用 Process.start 方法异步执行外部命令 python long_script.py,并分别监听命令的标准输出和标准错误。然后,我们通过 await process.exitCode 来等待命令执行完成,并获取返回码。

错误处理和异常情况

当执行外部命令时,可能会出现一些错误和异常情况,比如命令不存在、权限不足或者命令执行超时等。在这种情况下,我们可以通过捕获异常来处理错误,并根据需要进行相应的操作。

import 'dart:io';void main() async {try {// 执行外部命令,比如尝试执行一个不存在的命令ProcessResult result = await Process.run('nonexistent_command', []);print('标准输出:${result.stdout}');print('标准错误:${result.stderr}');print('返回码:${result.exitCode}');} catch (e) {print('发生异常:$e');}
}

在这个示例中,我们尝试执行一个不存在的命令 nonexistent_command,并使用 try...catch 块来捕获可能发生的异常。如果命令执行过程中出现异常,我们将捕获到的异常信息打印出来。

通过这些进阶用法的示例,我们可以更好地掌握如何在 Flutter 应用程序中异步执行外部命令,并处理可能出现的错误和异常情况。这将帮助我们编写更加健壮和可靠的应用程序,并提供更好的用户体验。

常见问题

在使用 ProcessResult 来执行外部命令时,有一些常见问题及解决方法可以帮助我们更加有效地利用它,并避免一些常见的陷阱。让我们一起来看看。

如何有效地利用 ProcessResult?

  1. 理解命令执行的结果:在使用 ProcessResult 时,首先要理解命令执行的结果,包括返回码、标准输出和标准错误等。这样可以帮助我们准确地判断命令是否执行成功,以及获取执行结果的相关信息。

  2. 异步执行命令:在需要执行耗时的命令或者等待结果返回的情况下,建议使用 Process.start 方法来异步执行命令,以避免阻塞主线程,提高应用程序的响应性。

  3. 合理处理错误和异常:在执行外部命令时,可能会出现一些错误和异常情况,比如命令不存在、权限不足或者命令执行超时等。建议使用 try...catch 块来捕获可能发生的异常,并根据需要进行相应的处理。

  4. 及时释放资源:在使用完 ProcessResult 后,及时释放相关资源,比如关闭进程或者清理临时文件等。这样可以有效地避免资源泄漏和系统资源的浪费。

避免常见的陷阱

  1. 忽略错误和异常:在执行外部命令时,可能会出现一些错误和异常情况,如果我们忽略了这些错误和异常,可能会导致应用程序出现不可预料的问题。因此,建议始终捕获可能发生的异常,并根据需要进行处理。

  2. 未处理标准输出和标准错误:在处理 ProcessResult 时,有时候我们可能只关注返回码,而忽略了标准输出和标准错误等重要信息。这样会导致我们无法获取命令执行的详细结果,影响后续的操作和判断。因此,建议始终注意处理标准输出和标准错误等信息。

  3. 阻塞主线程:在执行外部命令时,如果使用了阻塞式的方法,可能会导致主线程被阻塞,影响应用程序的响应性和性能。因此,建议使用异步执行的方法,并合理处理异步操作的结果。

通过遵循以上最佳实践,并避免常见的陷阱,我们可以更加有效地利用 ProcessResult,并编写出高质量和可靠性的 Flutter 应用程序。这将为我们的应用程序提供更好的用户体验,并提高开发效率。

总结

在 Flutter 开发中,ProcessResult 是执行外部命令并获取结果的重要工具。通过有效地利用 ProcessResult,我们可以实现与外部系统的交互,并处理命令执行的结果。掌握 ProcessResult 的使用技巧可以帮助我们开发出更加强大和灵活的应用程序,提高开发效率和用户体验。因此,深入了解和掌握 ProcessResult 是每个 Flutter 开发者值得关注和学习的重要内容。

相关文章:

解锁Flutter中的ProcessResult:让外部命令执行变得轻松

介绍 在我们的编程世界中,有时候我们需要与外部系统或者命令行交互。这就像在一场迷宫中寻找出口一样,我们需要向迷宫的门口询问正确的道路。而在 Flutter 中,这个问路的过程就是通过 ProcessResult 来实现的。 为什么要使用 ProcessResult…...

第二十五篇——信息加密:韦小宝说谎的秘诀

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 加密这件事,对于这个时代的我们来说非常重要,那么…...

Redis 主从复制+哨兵+集群

1、总结写在前面 Redis 集群 数据分片 高可用性 Redis 哨兵 主从复制 故障转移 2、主从复制 2.1、准备配置 查看docker 容器 ip docker inspect 容器id | grep IPAddressdocker inspect -f{{.Name}} {{.NetworkSettings.IPAddress}} $(docker ps -aq)修改配置文件 初始…...

cpolar:通过脚本自动更新主机名称和端口号进行内网穿透【免费版】

cpolar 的免费版经常会重新分配 HostName 和 Port,总是手动修改太过麻烦,分享一下自动更新配置文件并进行内网穿透的方法。 文章目录 配置 ssh config编写脚本获取 csrf_token打开登陆界面SafariChrome 设置别名 假设你已经配置好了服务器端的 cpolar。 …...

【Python日志模块全面指南】:记录每一行代码的呼吸,掌握应用程序的脉搏

文章目录 🚀一、了解日志🌈二、日志作用🌈三、了解日志模块⭐四、日志级别💥五、记录日志-基础❤️六、记录日志-处理器handler🎬七、记录日志-格式化记录☔八、记录日志-配置logger👊九、流程梳理 &#x…...

SpringBoot 多种优雅的线程池配置与使用(异步执行函数,反射机制,动态识别参数,有返回值)

想要明白生活你需要先经历它,而不是总在分析它。 —萨莉鲁尼 文章目录 前言一、@Async注解1. 概念2. 使用2.1 使用@EnableAsync启动函数异步支持2.2 不会异步执行的坑2.2.1 为什么内部调用不会异步执行?2.2.2 如何确保@Async方法异步执行?3. 配置线程池3.1 通过代码配置3.1.…...

ansible copy模块--持续创作中

copy模块用于将文件从ansible控制节点(管理主机)或者远程主机复制到远程主机上。其操作类似于scp(secure copy protocol)。 关键参数标红。 参数: src:(source:源) 要复制到远程…...

自学SAP是学习ECC版本还是S4版本?

很多人想学SAP,问我应该学ECC版本还是S4版本,我的建议如果你是自学的话,我个人建议使用ECC版本就行,因为这两个版本前台业务和后台配置的操作差异并不大,主要差异在于数据库的差异,前台业务操作和后台系统配…...

银河麒麟4.0.2安装带有opengl的Qt5.12.9

银河麒麟4.0.2下载地址:银河麒麟-银河麒麟(云桌面系统)-银河麒麟最新版下载v4.0.2-92下载站 VirtualBox:https://www.virtualbox.org/wiki/Downloads qt下载:Index of /archive/qt/5.12/5.12.9 1安装VirtualBox:网上教材比较多 1)安装完后安…...

django学习入门系列之第二点《浏览器能识别的标签3》

文章目录 列表表格往期回顾 列表 无序列表 <!-- <ul </ul> 无序列表 --> <ul><li> 内容1 </li><li> 内容2 </li><li> 内容3 </li><li> 内容4 </li> </ul>有序列表 <!-- <ol> &…...

git常见实用命令,简单上手操作

常用命令&#xff1a; 添加远程账号名称&#xff1a;git config --global user.name ‘’ 添加用户eamil&#xff1a;git config --global user.email ‘’ 初始化厂库&#xff1a;git init 新建文件夹&#xff1a;mkdir 文件夹名 新建文件&#xff1a;touch 文件名 查看…...

2-11 基于matlab的BP-Adaboost的强分类器分类预测

基于matlab的BP-Adaboost的强分类器分类预测&#xff0c;Adaboost是一种迭代分类算法&#xff0c;其在同一训练集采用不同方法训练不同分类器&#xff08;弱分类器&#xff09;&#xff0c;并根据弱分类器的误差分配不同权重&#xff0c;然后将这些弱分类器组合成一个更强的最终…...

Neo4j图形数据库查询,Cypher语言详解

Cypher语言详解 Cypher是一种专为Neo4j图形数据库设计的声明式查询语言。它类似于SQL&#xff0c;但其设计目标是便于表达图数据库中常见的图形结构和操作。本文将详细介绍Cypher语言的基本语法、常见操作、高级功能以及使用Cypher进行图形数据分析的技巧。 1. Cypher的基本概…...

C# Winform Datagridview控件使用和详解

DataGridView 是一种以表格形式显示数据的控件&#xff0c;由Rows(行)&#xff0c;Columns(列)&#xff0c;Cells(单元格)构成。本实例将综合利用DataGridView的属性和事件&#xff0c;展示不同的表格风格数据和操作。包含&#xff1a; 添加Datagridview行&#xff0c;列数据设…...

xshell传输文件速率为0

你们好&#xff0c;我是金金金。 场景 此时我通过xshell客户端上传文件&#xff0c;速率一直为0 解决 安装 yum -y install lrzsz 即可 这个工具主要提供 rz 和 sz 命令&#xff0c;用于通过 Zmodem 协议在本地计算机和远程服务器之间传输文件 编写有误还请大佬指正&#xff0…...

2.spring cloud gateway 源码编译

spring cloud gateway编译 1.编译 命令 mvn clean compile -U2.报错 报错信息 核心信息 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.1.2:check (checkstyle-validation) on project spring-cloud-gateway-mvc: Failed during …...

[Linux] UDP协议介绍:UDP协议格式、端口号在网络协议栈那一层工作...

TCP/IP网络模型, 将网络分为了四层: 之前的文章中以HTTP和HTTPS这两个协议为代表, 简单介绍了应用层协议. 实际上, 无论是HTTP还是HTTPS等应用层协议, 都是在传输层协议的基础上实现的 而传输层协议中最具代表性的就是: UDP和TCP协议了. 以HTTP为例, 在使用HTTP协议通信之前, …...

Spring Boot 中如何解决跨域问题、Spring Cloud 5大组件、微服务的优缺点是什么?

Spring Boot 中如何解决跨域问题 ? SpringMVC项目中使用CrossOrigin注解来解决跨域问题 , 本质是CORS RequestMapping("/hello")CrossOrigin(origins "*")//CrossOrigin(value "http://localhost:8081") //指定具体ip允许跨域public String …...

[Vulnhub] Sleepy JDWP+Tomcat+Reverse+Reverse-enginnering

信息收集 Server IP AddressPorts Opening192.168.8.100TCP:21,8009,9001 $ nmap -sV -sC 192.168.8.100 -p- --min-rate 1000 -Pn Starting Nmap 7.92 ( https://nmap.org ) at 2024-06-20 05:06 EDT Nmap scan report for 192.168.8.100 (192.168.8.100) Host is up (0.00…...

基于MATLAB的误码率与信噪比(附完整代码与分析)

目录 一. 写在前面 二. 如何计算误码率 三. 带噪声的误码率分析 3.1 代码思路 3.2 MATLAB源代码及分析 四. 总结 4.1 输入参数 4.2 规定比特长度 4.3 特殊形式比较 一. 写在前面 &#xff08;1&#xff09;本文章主要讨论如何仿真误码率随着信噪比变化的图像 &#…...

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 字符串筛选排序(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 字符串筛选排序(100分) 🌍 评测功能需要 订阅专栏 后私信…...

# 开发安全

开发安全 文章目录 开发安全安全开发生命周期安全开发目标安全开发基本准则注入类攻击手段Sql注入命令执行命令执行防御文件遍历防御 植入类安全漏洞防御XSS&#xff08;前端漏洞&#xff09;防御 储存型XSS文件上传防御 CSRF防御 会话固定防御 其它类型安全漏洞越权访问防御 口…...

Qt MaintenanceTool.exe使用镜像源更新Qt

环境&#xff1a;Windows11&#xff0c;Qt6.5&#xff0c;新版的MaintenanceTool.exe linux环境类似&#xff0c;mac环境可以看官方文档。 cmd命令窗口&#xff1a;切换到MaintenanceTool.exe所在目录&#xff0c;可以用“D:”切换到D盘&#xff0c;“cd xxxx”切换到xxxx目录…...

Java 8 Stream API介绍

Java 8引入了Stream API&#xff0c;这是对集合框架的一种增强&#xff0c;它允许你以一种声明式的方式处理数据集合。Stream API的核心在于将数据的操作分为两个主要阶段&#xff1a;中间操作和终端操作。中间操作返回的是一个新的Stream&#xff0c;可以链式调用多个中间操作…...

【前端技巧】css篇

利用counter实现计数器 counter-reset&#xff1a;为计数器设置名称&#xff0c;语法如下&#xff1a; counter-rese: <idntifier><integer>第一个参数为变量名称&#xff0c;第二个参数为初始值&#xff0c;默认为0 counter-increment&#xff1a;设置计数器增…...

2024年6月20日 (周四) 叶子游戏新闻

超市播音系统: 定时播放不同音乐 强制卸载软件: 一款强制卸载软件 免费多人沙盒游戏《宝藏世界》推出更新“潮起潮落”&#xff0c;带来全新克苏鲁风冒险准备好迎接一场超凡的冒险吧&#xff0c;MMORPG发行商gamigo宣布《宝藏世界》的最新更新&#xff1a;“潮起潮落”。这次更…...

Zookeeper 一、Zookeeper简介

1.分布式系统定义及面临的问题 分布式系统是同时跨越多给物理主机&#xff0c;独立运行的多个软件所组成的系统。类比一下&#xff0c;分布式系统就是一群人一起干活。人多力量大&#xff0c;每个服务器的算力是有限的&#xff0c;但是通过分布式系统&#xff0c;由n个服务器组…...

普通一本能找到嵌入式linux工作吗?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式linux的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;首先&#xff0c;普通…...

Effective C++ 改善程序与设计的55个具体做法笔记与心得 3

三. 资源管理 13. 以对象管理资源 请记住&#xff1a; 为防止资源泄露&#xff0c;使用智能指针 14. 在资源管理类中小心copying行为 请记住&#xff1a; 复制RAII对象必须一并复制他所管理的资源&#xff0c;所以资源的copying行为决定RAII对象的copying行为普遍而常见的…...

苹果的后来者居上策略:靠隐私保护打脸微软

01.苹果与微软相比更注重用户隐私 我一直是Windows的忠实用户&#xff0c;但微软疯狂地将人工智能融入一切&#xff0c;让我开始觉得应该咬咬牙换成Mac。 自小我几乎只用Windows电脑&#xff0c;所以我对MacOS一直不太适应。虽然Windows 11有其缺点&#xff0c;但总的来说&am…...

淘宝客wordpress模板/百度指数搜索热度排行

花了1天的时间写了一个检测某ip是否网络畅通的脚本&#xff0c;只检测网络是否畅通的功能很容易实现&#xff0c;但加了一些限制功能却不好实现。#!/bin/bash#####################################################################################本脚本放于异机&#xff0c…...

购物网站建设规划论文/免费网络推广软件

原题 城市里的间谍 分析 动态规划,dp[i][j]表示你在时刻i,车站j,最少还要等待的时间. 边界条件d[T][n]0 已经到达,其他d[T][i]inf不可达. 在一个站点时,有以下三种决策: 等一分钟搭乘往左开的车(前提是有)搭乘往右开的车AC代码 #include "bits/stdc.h" using namespa…...

做网站优化排名/深圳网络推广外包

随着无限火力自选模式的开启&#xff0c;许多小伙伴也沉迷在组队开黑的快乐中。而这次由于有Ban位的存在&#xff0c;所以除了最热门的猫咪外&#xff0c;一部分冷门英雄也正在崛起中。悠米悠米绝对是非BAN必选的存在&#xff0c;只要队友稍微选一些肉装坦克&#xff0c;或是灵…...

网站建设用哪种语言最好/湘潭网站设计

在请求的时候,请求头里肯定要带着token,所以在登录成功以后,就要先把token存起来 //拿到商家的token,存起来let token"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqaWFuZyIsInRlbmFudElkIjoiNDAiLCJleHAiOjE2MjM4MTM0MDMsImlhdCI6MTYyMjUxNzQwM30.L-HvbqXLp9xgYRg…...

顺义网站建设推广优化seo/百搜科技

一.用AS打开一个已存在的RN项目二.在android原生这边创建一个类继承ReactContextBaseJavaModule&#xff0c;这个类里面放我们需要被rn调用的方法&#xff0c;封装成了一个原生模块:新建一个类&#xff1a;取个名字:这里继承ReactContextBaseJavaModule&#xff0c;然后会报错&…...

wordpress标题修改/河北网站seo地址

转载于:https://www.cnblogs.com/GarfieldEr007/p/4956251.html...