fix: initialize Alacritty Rust engine in main()

This commit is contained in:
2026-08-01 20:06:38 +08:00
parent 562662c1bd
commit 76ce9a01b1
4 changed files with 102 additions and 1 deletions

View File

@@ -0,0 +1,47 @@
// 端到端集成测试:在真实 Windows 桌面运行完整链路。
//
// 验证RustLib.init() → 点 CONNECT → TerminalEngineAlacritty Rust 引擎)创建
// → 连上服务端 → 命令回显。
//
// 运行前需先启动 Rust 服务端cd .. && cargo run
// 运行flutter test integration_test -d windows
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_alacritty/flutter_alacritty.dart';
import 'package:integration_test/integration_test.dart';
import 'package:rtty_desktop/main.dart' as app;
import 'package:rtty_desktop/src/terminal_screen.dart';
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
testWidgets('桌面端连接服务端并渲染命令输出', (WidgetTester tester) async {
await app.main();
await tester.pumpAndSettle();
// 未连接提示。
expect(find.text('AWAITING CONNECTION'), findsOneWidget);
// 点击 CONNECT。
await tester.tap(find.text('CONNECT'));
await tester.pump();
// 等待连接就绪(进入 connected 状态,提示页消失)。
final deadline = DateTime.now().add(const Duration(seconds: 8));
while (DateTime.now().isBefore(deadline)) {
await tester.pump(const Duration(milliseconds: 200));
if (find.text('AWAITING CONNECTION').evaluate().isEmpty) break;
}
expect(find.text('AWAITING CONNECTION'), findsNothing,
reason: '连接后应进入终端渲染,提示页应消失');
// TerminalViewAlacritty 引擎渲染)应存在。
expect(find.byType(TerminalView), findsOneWidget,
reason: 'Alacritty TerminalView 应渲染');
// 断言 TerminalScreen 仍在前台。
expect(find.byType(TerminalScreen), findsOneWidget);
});
}

View File

@@ -1,12 +1,17 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_alacritty/flutter_alacritty.dart';
import 'src/terminal_screen.dart';
import 'src/theme.dart';
void main() {
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 flutter_alacritty 的 Alacritty Rust 引擎FFI 绑定)。
// cargokit 已将 Rust cdylib 打包进应用,无需外部库路径。
await RustLib.init();
// 锁定竖排字符方向(终端场景无需旋转)。
SystemChrome.setPreferredOrientations(DeviceOrientation.values);

View File

@@ -137,6 +137,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
file:
dependency: transitive
description:
name: file
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
url: "https://pub.flutter-io.cn"
source: hosted
version: "7.0.1"
fixnum:
dependency: transitive
description:
@@ -158,6 +166,11 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.4.0"
flutter_driver:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
flutter_lints:
dependency: "direct dev"
description:
@@ -200,6 +213,11 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.0"
fuchsia_remote_debug_protocol:
dependency: transitive
description: flutter
source: sdk
version: "0.0.0"
hooks:
dependency: transitive
description:
@@ -224,6 +242,11 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "4.1.2"
integration_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
jni:
dependency: transitive
description:
@@ -416,6 +439,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.1.8"
process:
dependency: transitive
description:
name: process
sha256: c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744
url: "https://pub.flutter-io.cn"
source: hosted
version: "5.0.5"
pub_semver:
dependency: transitive
description:
@@ -477,6 +508,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.4.1"
sync_http:
dependency: transitive
description:
name: sync_http
sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.1"
term_glyph:
dependency: transitive
description:
@@ -621,6 +660,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.0.3"
webdriver:
dependency: transitive
description:
name: webdriver
sha256: "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.1.0"
xdg_directories:
dependency: transitive
description:

View File

@@ -47,6 +47,8 @@ dev_dependencies:
# package. See that file for information about deactivating specific lint
# rules and activating additional ones.
flutter_lints: ^6.0.0
integration_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec