web-dev-qa-db-ja.com

Flutter-nullでゲッターの「長さ」が呼び出されました

Flutterアプリを開発しようとしています。このフラッターは、カードゲームのチームを作成しています。チームの作成後、ポイントはを通じてカウントされる可能性があるため、全員が何ポイントあるかを考える必要はありません。

しかし、例外が発生しました。例外とその意味を知っていますが、問題を解決する方法がわかりません。あなたたちの何人かが私を助けてくれることを願っています。

これはエラーがスローされるコードです:

import 'package:flutter/material.Dart';


class Punktezaehler extends StatefulWidget{

  final List<String> spieler_namen;
  Punktezaehler(this.spieler_namen);

  @override
  State<StatefulWidget> createState() => new _Punktezaehler(this.spieler_namen);
}


class _Punktezaehler extends State<Punktezaehler>{

  final List<String> spieler_namen;
  _Punktezaehler(this.spieler_namen);

  List<int> punkteanzahl_teamEins;
  List<int> punkteanzahl_teamZwei;

  @override
  Widget build(BuildContext context) {


    var spieler1 = spieler_namen[0].substring(0,3);
    var spieler2 = spieler_namen[1].substring(0,3);
    var spieler3 = spieler_namen[2].substring(0,3);
    var spieler4 = spieler_namen[3].substring(0,3);

    return new Scaffold(
      appBar: new AppBar(
        automaticallyImplyLeading: false,
        title: new Text("$spieler1 & $spieler2 vs" +" $spieler3 & $spieler4"),
        actions: <Widget>[

        ],
      ),
      body: Container(
        child: new Row(
          children: <Widget>[
            new Column(
              children: <Widget>[
                new IconButton(
                    icon: Icon(Icons.exposure_plus_2),
                    onPressed: () => punkte_hinzuzaehlen(1, 2)
                )
              ],
            ),
            new Column(
              children: <Widget>[
                //new FlatButton(onPressed: () => print(punkteanzahl_teamEins.length), child: new Text("Punkte")),
                ListView.builder(
                  itemCount: punkteanzahl_teamEins.length, //--> Error is thrown here
                  itemBuilder: (context, index){
                    return Text(punkteanzahl_teamEins[index].toString());
                  }
                ),
                new Row()
              ],
            ),
            new Column(
              children: <Widget>[
                new IconButton(
                    icon: Icon(Icons.exposure_plus_2),
                    onPressed: () => punkte_hinzuzaehlen(2, 2)
                )],
            )
          ],
        )
      ),
    );
  }

  void punkte_hinzuzaehlen(int team, int nummer){
    if (team == 1){
      //Team 1 bekommt die Punkte
      print("Team 1 gets points");
    }
    else if(team == 2){
      //Team 2 bekommt die Punkte
      print("Team 2 gets points");
    }
  }
}

そしてこれはエラーメッセージです:

══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
I/flutter (26028): The following NoSuchMethodError was thrown while handling a gesture:
I/flutter (26028): The getter 'length' was called on null.
I/flutter (26028): Receiver: null
I/flutter (26028): Tried calling: length

修正後、別のエラーが発生しました:

══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (26028): The following assertion was thrown during performResize():
I/flutter (26028): Vertical viewport was given unbounded width.
I/flutter (26028): Viewports expand in the cross axis to fill their container and constrain their children to match
I/flutter (26028): their extent in the cross axis. In this case, a vertical viewport was given an unlimited amount of
I/flutter (26028): horizontal space in which to expand.
4
user9047282

punkteanzahl_teamEinsが宣言されているだけです。ただし、初期化されていません。したがって、nullエラーがスローされます。

punkteanzahl_teamEinsに値を割り当てる必要があります

List<int> punkteanzahl_teamEins = [1,4,5,7];

または、要件として親からデータを渡します。

9
Dhiraj Sharma

問題を解決するために失われた時間を費やして最終的に解決策を得ました:アセットファイルの場合はpubspec.yamlを確認し、余分な「-」を削除してください。また、スペースのような構造に従ってください。すべてのこと。

この問題はpubspec.yamlファイルでのみ確認する必要があります

2
Chetan Raval

私たちの場合、webserviceを呼び出した後にインターネット接続がオフのときにこのエラーが発生しました。

1
CHIRINGUCHI

最初に、spieler_namenがnullかどうかを確認します。それがnullの場合は、以下のコードを使用して問題が解決されることを願っています。

if(spieler_namen == null){
  new Container(width: 10.0,height:  10.0,);
 }else{
 your requirement .......
 }
0
Adam

Pubspec.yamlのこのセクションに再度アクセスしてこれを修正します

# To add assets to your application, add an assets section, like this:
# assets:
#  - images/a_dot_burr.jpeg
#  - images/a_dot_ham.jpeg

スペース、ハイフン、ファイル名が正しいことを確認してください。注:すべての画像ファイルをリストする必要はありません。代わりに、ディレクトリを一覧表示できます。

assets:
- images/
0
Robert Stevens