質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.61%

dart 文字列から数字に変換 Math.parseInt() でエラーはなぜか他

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,159

vortAmas87

score 7

全くの初心者で大変基本的な質問で申し訳ないのですが、AndroidStudio環境 
flutter dart で入力した数字の文字列を数字に変換するので、エラーが出ます。解決するにはimport文以外に何か処理が必要ですか?また、入力した文字列を_kekka で表示するのにエラーが出ますがなぜでしょうか

main.dart 文

import 'package:flutter/material.dart';
import 'dart:math';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'test',
home: MyCustomForm(),
);
}
}

class MyCustomForm extends StatefulWidget {
@override
_MyCustomFormState createState() => _MyCustomFormState();
}

class _MyCustomFormState extends State<MyCustomForm> {

@override
Widget build(BuildContext context) {

final searchHint = Text("キーワード: ");
final searchText = new Flexible(
child: TextField(
controller: myController,
onSubmitted: (String txt) {
setState(() {
txt = "0-50";//入力値の例
List st_en = [0, 50];
st_en = txt.split("-");
var start = Math.parseInt(st_en[0]);//●●
var end = Math.parseInt(st_en[1]);
_kekka = txt;//●●
});
},
),
);

return Scaffold(
appBar: AppBar(
title: Row(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [
Text("テスト"),
//searchHint,
SizedBox(width: 5),
searchText,
]),

),
body: Text(_kekka),

);
}

final myController = TextEditingController();
final _kekka = "123";
}

処理結果のエラー文

Launching lib\main.dart on FIG LA1 in debug mode...
Running Gradle task 'assembleDebug'...

Compiler message:
lib/main.dart:35:25: Error: The getter 'Math' isn't defined for the class '_MyCustomFormState'.

  • '_MyCustomFormState' is from 'package:flutter_app_int/main.dart' ('lib/main.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Math'.
    var start = Math.parseInt(st_en[0]);
    ^^^^
    lib/main.dart:36:23: Error: The getter 'Math' isn't defined for the class '_MyCustomFormState'.
  • '_MyCustomFormState' is from 'package:flutter_app_int/main.dart' ('lib/main.dart').
    Try correcting the name to the name of an existing getter, or defining a getter or field named 'Math'.
    var end = Math.parseInt(st_en[1]);
    ^^^^
    lib/main.dart:37:13: Error: The setter '_kekka' isn't defined for the class '_MyCustomFormState'.
  • '_MyCustomFormState' is from 'package:flutter_app_int/main.dart' ('lib/main.dart').
    Try correcting the name to the name of an existing setter, or defining a setter or field named '_kekka'.
    _kekka = txt;
    ^^^^^^
    Target kernel_snapshot failed: Exception: Errors during snapshot creation: null
    build failed.

FAILURE: Build failed with an exception.

  • Where:
    Script 'C:\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 780

  • What went wrong:
    Execution failed for task ':app:compileFlutterBuildDebug'.

Process 'command 'C:\flutter\bin\flutter.bat'' finished with non-zero exit value 1

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 14s
Finished with error: Gradle task assembleDebug failed with exit code 1

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • popobot

    2020/02/13 18:00

    ソースコードやエラーメッセージは ``` で囲って読みやすくしてください

    キャンセル

  • vortAmas87

    2020/02/14 10:04

    始めて使ったので、書き方が良くなくてすみませんでした。質問の書き方をもう少し調べて見ます

    キャンセル

  • popobot

    2020/02/14 10:42

    そうなんですね、Markdown方式はteratailに限らず、よく利用されているので、覚えるといいと思います。

    今からでもいいので、この質問の内容も更新しましょう。
    後からこの質問を見た人がわかりやすいですし、練習にもなると思います。

    キャンセル

回答 1

checkベストアンサー

+1

文字列から数字に変換処理は、 int.parse() です。

import 'dart:math';も必要ありません。

参考:公式APIドキュメント

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/02/14 10:09

    ありがとうございました。入門書やネットでの例で書いたのですが、すでに仕様が変更されていたのですね。それから、_kekka のエラーの件ですが、final から var _kekka に修正したら良くなりました。

    キャンセル

  • 2020/02/14 10:39

    _kekkaの内容見逃してました...すみません。

    finalだと値を上書きできないのでvarに変更する対応で正しいと思います。

    キャンセル

  • 2020/02/15 10:55

    他のプログラムで final に代入していたので、final で上書きできないと思っていなかったのです。しかし次のように const と違って、リスト(配列)では値の変更が可能のようです。final _test = []; で _test.add('abc'); が実行できました。
    なお、どうしたら質問を更新することができますか?

    キャンセル

  • 2020/02/15 12:42

    > なお、どうしたら質問を更新することができますか?

    自分は質問したことがないのでよく知らないのですが、以下が参考になるかもです。
    https://teratail.com/questions/44783

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る