Closed4
Flutterで躓いたことまとめ
Dartの基礎だけど、String
からint
への変換はこう。
String str;
int num;
num = int.parse(str);
TextField
で正の実数だけを入力したい場合は以下...のはずなんだけど、iOSシミュレータで小数点は出てこないし、inputFormatters
使うと入力もできない。。
TextField(
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.allow(RegExp(r'^(\d+)?(\.\d+)?$'))
],
decoration: InputDecoration(
labelText: 'Height',
hintText: '150.0',
icon: Icon(Icons.person)
),
),
DartPadで正規表現をコネコネしつつ、見直し。
結論
TextField(
keyboardType: TextInputType.number,
inputFormatters: [
FilteringTextInputFormatter.allow(RegExp(r'^(\d+)?(\.\d*)?$'))
],
decoration: InputDecoration(
labelText: 'Height',
hintText: '150.0',
icon: Icon(Icons.person)
),
),
165
や165.0
を入力する過程で165.
を通過するが、それが例外となることが問題だった。
なので、小数点以下の数字が入力されていなくても良いように+
(1回以上のマッチ)から*
(0回以上のマッチ)へ変更。
(165.
は165.0
とみなす方向で妥協(数論的にはイマイチやけども...))
一応BMIを計算してprint
するところまではできた。
同じ画面上に結果を表示するためにはStatefulWidget
にしてState
を作らないといけないっぽいので、いったんサンプルアプリと同じく別画面に結果を表示することにする。
このスクラップは2024/04/25にクローズされました