Flutter未知功能插件derry的使用(注意:由于插件介绍为undefined,以下基于插件名称进行合理推测)
Flutter未知功能插件derry的使用(注意:由于插件介绍为undefined,以下基于插件名称进行合理推测)
Derry
Derry 是一个用于 Dart 的脚本管理器。
Overview
Derry 可以帮助您定义快捷脚本,使您不必一遍又一遍地输入冗长且容易忘记的命令行脚本。例如,您可以将以下命令:
dart run build_runner build --delete-conflicting-outputs
在 pubspec.yaml
中定义为:
scripts:
build: dart run build_runner build --delete-conflicting-outputs
然后只需运行:
derry build
Installation
通过 pub.dev 安装 derry 作为全局依赖:
dart pub global activate derry
然后可以使用 derry 在当前 Dart/Flutter 项目中运行命令:
derry [script]
Usage
当调用时,derry 会在当前目录中查找 pubspec.yaml
文件,如果不存在则会抛出错误。可以在 pubspec.yaml
文件中的 scripts
节点下声明脚本。
scripts:
build: dart run build_runner build
运行:
derry build
# 或者带附加参数
derry build -- --delete-conflicting-outputs
API Documentation
使用定义文件
脚本可以在 pubspec.yaml
文件内配置,也可以在单独的文件中配置。如果使用单独的文件来配置脚本,则将文件名作为 pubspec.yaml
文件中 scripts
节点的值传递。
# pubspec.yaml
scripts: derry.yaml
# derry.yaml
build: dart run build_runner build
将脚本作为列表使用
脚本可以是一个字符串或字符串列表。如果是列表,列表中的字符串将按给定顺序同步执行。
build:
- dart test
- echo "test completed"
- dart run build_runner build
嵌套脚本
脚本可以根据需要嵌套。例如,可以根据操作系统使用不同的构建脚本实现。
build:
windows:
- echo 0 # do something
mac:
- echo 1 # do something else
可以通过 derry build windows
在 Windows 上调用,通过 derry build mac
在 macOS 上调用。
预处理和后处理脚本
使用预处理和后处理脚本,可以轻松定义在特定脚本前后运行的脚本,而无需担心引用问题。Derry 自动从名称中理解它们。
prepublish:
- cargo build && copy target blob
- dart test
publish:
- dart pub publish
postpublish:
- rm -rf blob
配置脚本描述
可以通过添加 (description)
选项来添加描述字符串,这对于通过 derry ls -d
命令查看可用脚本列表时非常有用。如果使用 (description)
字段,则必须使用 (scripts)
字段定义脚本。
build:
(description): script to be called after every update to x.dart file
(scripts):
- cat generated.txt
- dart run build_runner build
配置多行脚本
注意,在脚本列表中,执行将在单独的进程中发生。可以使用 &&
在同一进程中执行多个脚本。
# > 或 | 可以用来定义多行字符串,这是标准的 YAML 语法
build: >
cat generated.txt &&
dart run build_runner build
# 如果 generated.txt 不存在,第二行不会被调用
使用引用
定义脚本时,可以通过 $
语法引用其他脚本。这些引用不会使用单独的 derry 进程执行。例如,
test:
- dart run test
- echo "test completed"
build:
- $test # instead of using derry test
- $test --ignored # even with arguments
- flutter build
generate:
env:
- echo env
release:
- $generate:env # use nested references via :
- $build
derry test
将启动一个新的 derry 进程来执行,而引用不会,减少了运行 Dart 代码所需的时间,并启动该进程。
但请注意,引用将占用整行脚本。例如,必须为子命令提供单独的一行,不能与其他脚本一起使用或将它们夹在字符串中间。
列出可用脚本
使用此命令查看当前配置中可用的脚本。
derry ls # --description 或 -d 输出描述
检查 derry 脚本的位置
使用此命令查看 derry 脚本文件的位置(绝对路径和相对路径)。还可以使用此命令检查脚本是否正确格式化或位置是否正确。
derry source # --absolute 或 -a 显示绝对路径
升级 derry
dart pub global activate derry # 或
derry upgrade # 将运行 `dart pub global activate derry`
Why & How
说实话,我需要它。虽然制作起来很容易,但在实现脚本执行方面遇到了一些困难。由于 Dart 的 Process
不擅长执行系统命令,因此使用了 Rust 并借助 Foreign Function Interfaces。对于执行,目前在 Windows 上使用 cmd
,在 Linux 和 Mac 上使用 bash
。
Currently Supported Platforms
目前支持 64 位 Linux、Windows 和 Mac。
示例代码
// 查看仓库中的 [derry.yaml] 文件以获取更多详细示例
void main() {
print('Derry.');
}
希望以上信息对您有帮助!如果您有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter未知功能插件derry的使用(注意:由于插件介绍为undefined,以下基于插件名称进行合理推测)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter未知功能插件derry的使用(注意:由于插件介绍为undefined,以下基于插件名称进行合理推测)的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter社区中,尽管某些插件可能还未被广泛认知或文档不够详尽,但基于插件名称“derry”进行合理推测,我们可以尝试展示如何集成和使用一个假想的Flutter插件。请注意,以下代码示例是基于假设构建的,因为实际的“derry”插件功能和API在现实中可能是未知的。
假设的“derry”插件功能
假设“derry”插件提供了一些与设备硬件交互或数据处理相关的功能,比如读取设备传感器数据、执行某些计算任务等。以下是一个如何集成和使用这样一个假设插件的示例。
1. 添加依赖
首先,在pubspec.yaml
文件中添加对“derry”插件的依赖(请注意,这里的版本号^x.x.x
是假设的,实际使用时需要替换为真实版本号):
dependencies:
flutter:
sdk: flutter
derry: ^x.x.x # 假设的版本号
然后运行flutter pub get
来安装依赖。
2. 导入插件
在需要使用“derry”插件的Dart文件中导入它:
import 'package:derry/derry.dart';
3. 使用插件功能
假设“derry”插件提供了一个readSensorData
方法来读取设备传感器数据,以及一个performCalculation
方法来执行某些计算。以下是如何使用这些假设方法的示例代码:
import 'package:flutter/material.dart';
import 'package:derry/derry.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String sensorData = 'No data';
String calculationResult = 'No result';
@override
void initState() {
super.initState();
// 假设的读取传感器数据方法,这里使用Future来模拟异步操作
_readSensorData();
// 假设的执行计算方法,这里传递一些示例参数
_performCalculation(10, 20);
}
Future<void> _readSensorData() async {
try {
// 假设的readSensorData方法返回Future<String>
String data = await Derry.readSensorData();
setState(() {
sensorData = data;
});
} catch (e) {
print('Error reading sensor data: $e');
}
}
Future<void> _performCalculation(int a, int b) async {
try {
// 假设的performCalculation方法返回Future<int>,执行加法运算
int result = await Derry.performCalculation(a, b);
setState(() {
calculationResult = 'Result: $result';
});
} catch (e) {
print('Error performing calculation: $e');
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Derry Plugin Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Sensor Data: $sensorData'),
SizedBox(height: 20),
Text(calculationResult),
],
),
),
),
);
}
}
注意事项
- 由于“derry”插件是假设的,上述代码中的
Derry.readSensorData()
和Derry.performCalculation(int a, int b)
方法及其返回类型也是基于假设的。 - 在实际使用中,你需要查阅“derry”插件的官方文档来了解其真实的功能和API。
- 如果“derry”插件确实存在但文档不够详尽,你可以尝试在其GitHub仓库的
README.md
文件、示例代码或issue区寻找更多信息。 - 如果“derry”插件不存在或功能与你的假设不符,上述代码将无法正常工作。此时,你需要根据实际需求寻找或开发合适的插件。