From 094417ac68042b925d2ec70a8f9a12f1de4305b0 Mon Sep 17 00:00:00 2001 From: fuwa Date: Sat, 28 Mar 2020 23:22:23 +0800 Subject: [PATCH] use linesplitter on stdout --- Makefile | 2 +- cyberwow/lib/logic/controller/process/run.dart | 6 +++++- cyberwow/lib/state/synced.dart | 2 +- cyberwow/lib/state/syncing.dart | 2 +- cyberwow/lib/widget/synced.dart | 2 +- cyberwow/lib/widget/syncing.dart | 2 +- 6 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index bf0a369..9843398 100644 --- a/Makefile +++ b/Makefile @@ -75,7 +75,7 @@ build: build-debug: cd cyberwow && \ - flutter build apk --debug --target-platform android-arm64 -v + flutter build apk --debug --target-platform android-arm64 install: build cd cyberwow && \ diff --git a/cyberwow/lib/logic/controller/process/run.dart b/cyberwow/lib/logic/controller/process/run.dart index 659d61c..b572fd4 100644 --- a/cyberwow/lib/logic/controller/process/run.dart +++ b/cyberwow/lib/logic/controller/process/run.dart @@ -79,7 +79,11 @@ Stream runBinary if (input != null) { printInput(); } - await for (final line in outputProcess.stdout.transform(utf8.decoder)) { + + final _stdout = outputProcess.stdout + .transform(utf8.decoder).transform(const LineSplitter()); + + await for (final line in _stdout) { log.finest('process output: ' + line); yield line; } diff --git a/cyberwow/lib/state/synced.dart b/cyberwow/lib/state/synced.dart index 35aa741..15d4f0d 100644 --- a/cyberwow/lib/state/synced.dart +++ b/cyberwow/lib/state/synced.dart @@ -66,7 +66,7 @@ class SyncedState extends AppState { } void appendInput(final String line) { - stdout.addLast(config.c.promptString + line + '\n'); + stdout.addLast(config.c.promptString + line); syncState(); processInput.add(line); diff --git a/cyberwow/lib/state/syncing.dart b/cyberwow/lib/state/syncing.dart index 9b21db6..80cf59b 100644 --- a/cyberwow/lib/state/syncing.dart +++ b/cyberwow/lib/state/syncing.dart @@ -34,7 +34,7 @@ import 'exiting.dart'; class SyncingState extends AppState { - final Queue stdout = Queue.from(['']); + final Queue stdout = Queue(); bool synced = false; diff --git a/cyberwow/lib/widget/synced.dart b/cyberwow/lib/widget/synced.dart index b04cd16..a3db0a6 100644 --- a/cyberwow/lib/widget/synced.dart +++ b/cyberwow/lib/widget/synced.dart @@ -278,7 +278,7 @@ Widget terminalView(BuildContext context, String title, SyncedState state) { Text ( - state.stdout.join(), + state.stdout.join('\n'), style: Theme.of(context).textTheme.body2, ) ], diff --git a/cyberwow/lib/widget/syncing.dart b/cyberwow/lib/widget/syncing.dart index 4e50b2c..2df3d62 100644 --- a/cyberwow/lib/widget/syncing.dart +++ b/cyberwow/lib/widget/syncing.dart @@ -52,7 +52,7 @@ Widget build(BuildContext context, SyncingState state) { reverse: true, child: Text ( - state.stdout.join(), + state.stdout.join('\n'), style: Theme.of(context).textTheme.body1, ) )