問題
dart2.6のdart2native
で遊ぼうとしたらString.fromEnvironment()
でハマりまくったのでメモがてら記事にしました。
dart2native
コマンドで-D
フラグをつけて定数を埋め込んでワンバイナリにできるようなので試しに下記のコードで確認しようとしたところ・・・。
void main() {
print(String.fromEnvironment('hoge'));
}
$ dart2native -Dhoge=fuga main.dart -o main
$ ./main
null
null
しかでない!!
どこが悪いのか一向に変わらず2時間ほど格闘していました。。。
結論
const
つけよう
void main() {
print(const String.fromEnvironment('hoge'));
}
String.fromEnvironment()
をconstで宣言しなければいけなかったというしょーもないオチです。
そもそもfromEnvironment
って環境変数を取れそうみを出しつつそうじゃない部分が気に食わないのですが。
ちなみに環境変数はdart:io
のPlatform.environment['環境変数名']
なので覚えておきましょう。
最後に
dart2native
とString.fromEnvironment()
でワンバイナリ+埋め込まれた定数を扱えるようになったのでそろそろサーバサイドDartに本気を出すのもいいのではないかと思う今日この頃です。
手始めにgoで書いてたcliツールとかdartで書き直してみようかと思います。
これを機にflutter以外のdartにも目を向けてもっとdartにのめり込みましょう