4

情報: 私は、react-native を使用してモバイル アプリを開発するために使用される Emacs ユーザーです。

説明

最近、私はフラッターアプリを開発しようとしていますが、そのhot-reload部分にこだわっていlib/*dartます。

私が考えているのは、 の変更を監視し、フラッタープロセスに自動的lib/*dartに渡すことです。r

flutter runプロセスにたどり着くにはどうすればよいですか?

解決

Emacs ソリューション

保存時にホット リロードを何度も読んだ後、Emacs の構成ファイルを更新しました。

(require 'dart-mode)
(defun auto-reload ()
  (shell-command "kill -s SIGUSR1 $(cat /tmp/flutter.pid) && echo 'reload flutter...'"))

(add-hook 'dart-mode-hook
          (lambda ()
            (add-hook 'after-save-hook 'auto-reload nil 'make-it-local)))

信じられないほど簡単です...プロセスを強制終了すると、シェルスクリプトを介してプロセスにシグナルをflutter run送信した後、プロセスが自動的にリロードされます。kill -SIGUSR1flutter run

ありがとう@pskink、頭を使ってもう一度試してみたら、問題は解決しました。

説明linux signalもう一度確認しましたkill。コマンドは次のように説明されています。

指定されたプロセス、指定されたプロセス グループのすべてのメンバー、またはシステム上のすべてのプロセスにシグナルを送信します。

プロセスを無作法に殺すだけではありません...そしてkill、コマンドラインでの説明は次のとおりです。

kill [-s sigspec | -n signum | -sigspec] pid | jobspec
...or
kill -l [sigspec]

ただし、フラッター--pid-fileのフラグは次のように記述されます。

プロセス ID を書き込むファイルを指定します。SIGUSR1 を送信してホット リロードをトリガーし、SIGUSR2 を送信してホット リスタートをトリガーできます。

私たちが に信号をkill -SIGUSR1 $(cat /tmp/flutter.pid)送ると、それが起こったのです。SIGURS1flutter process

プロセスrの「画面」に送信できるかどうか、まだ疑問に思っています。flutter run

4

1 に答える 1