Dartではファイルの下にいきなり変数を置くことができる(トップレベル変数)。
some_file.dart
final channel = const MethodChannel('xxx');
さて、このように書いた時、いったいいつconst MethodChannel('xxx');
が呼ばれるのでしょうか?
答えはこの変数に初めてアクセスしたときです。
なので、たとえば以下のように書いていたとしても、channel
変数自体にアクセスするコードがどこにもなかったらsetMethodCallHandler
の中身は実行されません。
some_file.dart
final channel = const MethodChannel('xxx')
..setMethodCallHandler((methodCall) {
// ...
});
void main() {
runApp(MyApp());
}
ちゃんと明示的にどこかでchannel
にアクセスするロジックになるようにしましょう。例えばこんな感じ。
some_file.dart
final channel = const MethodChannel('xxx');
void main() {
channel.setMethodCallHandler((methodCall) {
// ...
});
runApp(MyApp());
}
JavaScriptみたいにまずファイル全体が処理される、みたいなイメージでいると思わぬ落とし穴になりますね。