🌊
FlutterやdartでマルチプラットフォームでWeb, JS, IOなどを使う
何が困るのか
例えばFlutterでimport 'package:js'
やimport 'dart:js'
と書いてAndroidで実行すると、エラーが出ます。
if (kIsWeb){
import 'package:js';
}
'if' can't be used as an identifier because it's a keyword.
Try renaming this to be an identifier that isn't a keyword.
これからは、JS
パッケージで@JS
を使う前提で書きます。
どうすればいいのか
コンパイルエラーが発生してしまうので、代わりに例外に変換すればいいです。
3つdartファイルが必要です。
- main.dart
- js_or_empty.dart
- web_import_except.dart
main.dart
import 'js_or_empty.dart';
("exampleJSFunction")
external void _exampleJSFunction();
void main() async {
if (kIsWeb) {
_exampleJSFunction();
}
}
js_or_empty.dart
export 'web_import_except.dart' if (dart.library.js) 'package:js/js.dart';
web_import_except.dart
class JS {
final String? name;
const JS([this.name]);
}
Discussion