🎯

【Dart】String型("0", "42")の値をint型(0, 42)に変換したいがparse出来なかったとき別の初期値を入れたい

2021/01/01に公開

結論

こうすれば良い

final value = "あ"; // 変換したい値

print(
  int.tryParse(value ?? '') ?? 0
);
// 0
// "あ"はint型に変換されないので0が表示される

どうなってるの?

tryParseとは

tryParseは変換できなかった場合はnullを返す仕組みになっている。

なぜvalue ?? ''

なぜvalue ?? '' としているのかというとvalueにはnullが入るとエラーが出てしまうため。

final value = null;

print(
  int.tryParse(value) ?? 0
);
// エラー
// tryParseの引数はString型のみ

Discussion