Flutter交互式编程环境插件repl的使用
Flutter交互式编程环境插件repl的使用
A REPL for Dart.
这个包不再被维护。请查看 https://pub.dev/packages/interactive 获取一个功能更强大且易于使用的Dart REPL。
Prior art
基于早期版本的 Dart REPL概念验证环境,来自Andreas Kirsch的一系列文章 Dart REPL演进Poc,以及Dart SDK测试中的一个示例 vm_service_tester.dart,还有recharge包。
Features
- ✅ MVP(最小可行产品)支持表达式求值
- ✅ 使用BlackHC的工作代码来解析输入的语句与表达式
- ✅ 使用
cli_repl
以改善REPL的人机工程学 - ✅ 使用标准的
pub activate
运行包的二进制文件而不是脚本 - ✅ 改善了使用文档
- ✅ 支持热重载并使用草稿文件
- ❌ ?? 支持内置包导入
- ❌ ?? 支持任意包导入
- ❌ ?? 使用独立隔离区的草稿文件
?? - 不清楚这是否是一个可行的方法
Usage
要安装该REPL,可以使用以下命令:
dart pub global activate repl
然后只要将pub
系统缓存添加到路径中,就可以通过运行drepl
来使用它。
Supported features
目前你可以使用表达式和语句,还有一些内置功能也被支持(详见下文),已经可以通过REPL完成一些有用的事情。
例如,你可以像JavaScript的IIFE一样操作:
> (){final data = ['this', 'is', 'a', 'test']; for(int i = 0; i < data.length; i++) print(data[i]); }()
当然,这个例子有点牵强,你也可以这样做:
> ['this', 'is', 'a', 'test'].forEach((x) => print(x))
一些语句也是可能的,例如:
> int sqr(int a) => a*a;
> sqr(5)
> 25
Built-in’s
print()
- 打印到输出reload()
- 触发热重载(目前效果不佳)
Editing, History, Shortcuts
请参阅cli_repl包文档了解支持的快捷键。
Development
克隆此仓库后,在项目的顶层目录运行以下命令:
dart bin/main.dart
Future plans
一个更强大的实现路线可能是使用Dart嵌入API,或许通过FFI避免过多的C/C++开发,假设通过FFI让DartVM可以调用自身嵌入API?
Contributing
所有贡献:PR、错误报告、功能请求、文档都欢迎。
贡献指南:TODO。
示例代码
以下是一个完整的示例,展示如何使用repl
插件进行交互式编程:
// 启动drepl插件
dart pub global activate repl
drepl
// 在REPL中执行以下代码
> int add(int a, int b) => a + b;
> add(3, 5)
> 8
> List<int> numbers = [1, 2, 3, 4];
> numbers.forEach((num) => print(num));
1
2
3
4
> String greet(String name) {
... return "Hello, $name!";
... }
> greet("World")
> Hello, World!
更多关于Flutter交互式编程环境插件repl的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter交互式编程环境插件repl的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,repl
(Read-Eval-Print Loop)是一种交互式编程环境,允许开发者实时编写和执行代码。虽然Flutter本身并没有内置的REPL工具,但你可以通过一些插件或工具来实现类似的功能。
1. 使用 flutter_repl
插件
flutter_repl
是一个Flutter插件,它提供了一个交互式的REPL环境,允许你在Flutter应用中实时执行Dart代码。
安装 flutter_repl
-
在
pubspec.yaml
文件中添加依赖:dependencies: flutter_repl: ^0.1.0
-
运行
flutter pub get
来安装依赖。
使用 flutter_repl
在你的Flutter应用中,你可以通过以下方式使用 flutter_repl
:
import 'package:flutter/material.dart';
import 'package:flutter_repl/flutter_repl.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter REPL Example'),
),
body: ReplWidget(), // 使用 ReplWidget 来启动 REPL
),
);
}
}
ReplWidget
提供了一个交互式的命令行界面,你可以在其中输入Dart代码并立即看到结果。
2. 使用 DartPad
DartPad 是一个在线的Dart编程环境,支持Flutter。虽然它不是Flutter应用的一部分,但它提供了一个非常方便的REPL环境,允许你实时编写和测试Dart代码。
访问 DartPad 并选择Flutter模式,你就可以开始编写和运行Flutter代码了。
3. 使用 flutter console
Flutter SDK 提供了一个命令行工具 flutter console
,它允许你在命令行中直接与Flutter应用进行交互。虽然它不是一个完整的REPL环境,但它可以用于调试和测试。
flutter console
4. 使用 dart
命令行工具
Dart SDK 提供了一个 dart
命令行工具,它可以直接启动一个Dart REPL环境。虽然它不直接支持Flutter,但你可以在其中编写和测试Dart代码。
dart