web-dev-qa-db-ja.com

Flutter(Dart):レンダリングによる例外/ RenderFlexがオーバーフローしました

Flutter(Dart)RenderFlexオーバーフローピクセルに問題があります。レンダリングライブラリの例外。

アプリページビューでスクロール機能を管理または適用し、次のようなメッセージでFlutterのレンダリング例外を回避するにはどうすればよいですか?

RenderFlexが下部で28ピクセルオーバーフローしました。

万が一あなたが私を助けるために完全なログが必要な場合はここにあります:

enter image description here

ホットリロードでは、メッセージごとに下部に黄色/黒のストライプが表示されます。

これはスクロール可能なウィジェットで管理できますか?または、ウィジェットを制御するために宣言することはできますか?

必要に応じて完全なコード(テキストデータを変更しましたが、表示されるテキストが画面サイズよりも長いと想定しているため、エラーが発生します):

   @override
  Widget build(BuildContext context) {
    return new DefaultTabController(
        length: 3,
        child: new Scaffold(
          appBar: new AppBar(
            bottom: new TabBar(
              tabs: [
                new Tab(text: "xxx",),
                new Tab(text: "xxx",),
                new Tab(text: "xxx",),
              ],
            ),
            title: new Text(data["xxx"]),
          ),
          body: new TabBarView(
            children: [
              new Column(
                children: <Widget>[
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 16.0
                        ),),
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 10.0
                        ),),
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 16.0
                        ),),
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 8.0
                        ),
                      ),
                  new Text(data["xxx"],
                        style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.blue,
                              fontSize: 8.0
                        ),),

                  new Row(
                    children: <Widget>[
                      new Expanded(
                        child: new Text("xxx"),
                      ),
                      new Expanded(
                        child: new Icon(Icons.file_download, color: Colors.green, size: 30.0,),
                      ),
                    ],
                  ),

                  new Divider(),
                  new Text("xxx", 
                            style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.red,
                              fontSize: 16.0
                      ),
                  ),
                ],
              ),

              new ListView.builder(
                itemBuilder: (BuildContext context, int index) => new EntryItem(_lstTiles[index]),
                itemCount: _lstTiles.length,
              ),

              new Column(
                children: <Widget>[
                  new Text(data["xxx"], 
                            style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.green[900],
                              fontSize: 16.0
                      ),
                  ),
                  new Text(data["xxx"], 
                            style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.green[900],
                              fontSize: 16.0
                      ),),
                  new Text(data["xxx"]),
                  new ListTile(title: new Text("xxx")),
                  new Text(data["xxx"]),
                  new ListTile(title: new Text("xxx")),
                  new Divider(),
                  new Text("xxx", 
                            style: new TextStyle(
                              fontStyle: FontStyle.italic,
                              color: Colors.red,
                              fontSize: 16.0
                      ),
                  ),
                ],
              ),
            ],
          ),
        ),
      );
  }
9
oetoni

これは、特に複数のデバイスと向きでアプリのテストを開始する場合に発生する非常に一般的な問題です。 Flutterのウィジェットギャラリーには、さまざまなスクロールウィジェットをカバーするセクションがあります。

https://flutter.io/widgets/scrolling/

コンテンツ全体を SingleChildScrollView でラップするか、スクロール ListView を使用することをお勧めします。

24
RedBrogdon