1. 程式人生 > >Flutter Another exception was thrown: line 662 pos 12: 'child.parent == this': is not true.

Flutter Another exception was thrown: line 662 pos 12: 'child.parent == this': is not true.

彈出軟鍵盤丟擲異常佈局內容溢位

錯誤日誌

Another exception was thrown: 'package:flutter/src/rendering/viewport.dart': Failed assertion: line 662 pos 12: 'child.parent == this': is not true.

在這裡插入圖片描述

場景(已知)

型別1

我們在使用自定義dialog的時候,佈局中有使用TextField

TextFormField 當他們獲取到了焦點,彈出軟盤時,會丟擲該異常。

型別2

我們在使用自定義dialog的時候,佈局中有使用 多包含型別佈局 如 ListView GridView 他們嵌套了TextField TextFormField 當他們獲取到了焦點,彈出軟盤時,會丟擲該異常。

解決方案

包裹一層ScrollView 推薦使用簡單的 SingleChildScrollView

虛擬碼

new SingleChildScrollView(
              child: TextField(
//          keyboardType: TextInputType.multiline,
//        controller: accountController,
              textAlign: TextAlign.center,
//              autofocus: true, //自動獲取焦點
//              maxLength: 7,
              style: new TextStyle(fontSize: 14.0, color: Colors.black),
              maxLines: 1,
              decoration: InputDecoration(
                  contentPadding: EdgeInsets.all(2.0),
                  border: OutlineInputBorder(),
                  hintText: betItems[index].rate,
                  suffix: new ImageIcon(
                      new AssetImage("images/ic_edit_note.png"),
                      color: null,
                      size: 10.0)),
              onChanged: (String value) {
                betItems[index].rate = value;
              },
            ),
            ))