【问题标题】:Flutter / Issues with widget placement - getting white screen for Text formsFlutter / 小部件放置问题 - 文本表单出现白屏
【发布时间】:2021-05-19 14:44:32
【问题描述】:

如果我访问“添加书”窗口,但不是文本字段只是空白页面,我遇到了元素层次结构的问题,因为 atm 会出现白屏。 我确实收到了这些错误:

  1. 需要-绘制需要-合成-位-更新
  2. RenderRepaintBoundary#5e192 relayoutBoundary=up1 NEEDS-PAINT 失败
  3. 断言:第 1785 行第 12 行:'hasSize'
  4. [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:无法对从未布局过的渲染框进行测试。

也许有人可以解释我正在做的错误以更好地理解它。提前谢谢!

      @override
  Widget build(BuildContext context) {
    return Scaffold(
      //resizeToAvoidBottomPadding: false,
      appBar: AppBar(title: Text("Add book")),
      body: Container(
        child: Form(
          key: _formKey,
      child: Column(
        children: [
          Expanded(
          child: SingleChildScrollView(
            child: Column(
              children: <Widget>[
                // Book name

                Padding(
                  padding: EdgeInsets.all(20.0),
                  child: Container(
                    //height: 30,
                    decoration: BoxDecoration(
                      borderRadius: BorderRadius.all(Radius.circular(20)),
                    ),
                    //alignment: Alignment.center,
                    child: Container(
                      padding: const EdgeInsets.only(
                          top: 10, bottom: 10, left: 20, right: 20),
                      decoration: new BoxDecoration(
                          color: Color(0x70487bea),
                          borderRadius:
                              new BorderRadius.all(Radius.circular(30))),
                      child: TextFormField(
                        controller: nameController,
                        decoration: InputDecoration(
                          border: InputBorder.none,
                          hintText: " Write name",
                          hintStyle: TextStyle(color: Colors.grey[900]),
                        ),
                      ),
                    ),
                  ),
                ),

                // Author
                Padding(
                  padding: EdgeInsets.all(20.0),
                  child: Container(
                    decoration: BoxDecoration(
                      borderRadius: BorderRadius.all(Radius.circular(20)),
                    ),
                    //alignment: Alignment.center,
                    child: Container(
                      padding: const EdgeInsets.only(
                          top: 10, bottom: 10, left: 20, right: 20),
                      decoration: new BoxDecoration(
                          color: Color(0x70487bea),
                          borderRadius:
                              new BorderRadius.all(Radius.circular(30))),
                      child: TextFormField(
                        controller: authorController,
                        decoration: InputDecoration(
                          border: InputBorder.none,
                          hintText: " Write name",
                          hintStyle: TextStyle(color: Colors.grey[900]),
                        ),
                      ),
                    ),
                  ),
                ),

                // Category
                Padding(
                  padding: EdgeInsets.all(20.0),
                  child: DropdownButtonFormField(
                    value: dropdownValue,
                    icon: Icon(Icons.arrow_downward),
                    decoration: InputDecoration(
                      labelText: "Choose category",
                      enabledBorder: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(10.0),
                      ),
                    ),
                    //alignment: Alignment.center,
                    items: listOfCategories.map((String value) {
                      return new DropdownMenuItem<String>(
                        value: value,
                        child: new Text(value),
                      );
                    }).toList(),
                    onChanged: (String newValue) {
                      setState(() {
                        dropdownValue = newValue;
                      });
                    },
                  ),
                ),

                //temp placement
                // Submit
                Flexible(
                  child: Padding(
                    padding: EdgeInsets.all(20.0),
                    child: isLoading
                        ? CircularProgressIndicator()
                        : Container(
                            alignment: Alignment.center,
                            width: MediaQuery.of(context).size.width,
                            padding: EdgeInsets.symmetric(vertical: 10),
                            child: RaisedButton(
                              onPressed: () {
                                if (_formKey.currentState.validate()) {
                                  setState(() {
                                    isLoading = true;
                                  });
                                  //getUsername();
                                  addToFb();
                                  //dispose();
                                }
                              },
                              shape: RoundedRectangleBorder(
                                  borderRadius: BorderRadius.circular(30),
                                  side: BorderSide(color: Colors.indigo[500])),
                              color: Colors.indigo[400],
                              child: Text(
                                "Save",
                                style: TextStyle(
                                    fontSize: 16.0, color: Colors.white),
                              ),
                              padding: EdgeInsets.fromLTRB(35, 15, 35, 15),
                            ),
                     ...

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    试试这个:
    (把你的小部件放在ColumnForm下)

    Scaffold(
          appBar: AppBar(title:
                    Text("Add book"),
                  ),
          body: SingleChildScrollView(
            child: Form(
              key: _formKey,
              child: Column(...),
                   ),
                ),
    ),
    

    【讨论】:

    • 哈瓦拉。现在它显示窗口的名称,但它不加载文本表单。我确实收到了这个新错误 [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: Cannot hit test a render box that never been layout.
    • 我试过了,现在我有全白窗口,无法使用“导航器”进入主页 // 主要重复错误:RenderBox 未布置:_RenderSingleChildViewport#fc53f relayoutBoundary=up10 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.dart':断言失败:第 1785 行 pos 12:'hasSize'
    猜你喜欢
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 2021-07-31
    • 2022-11-14
    • 2020-12-11
    • 1970-01-01
    • 2019-05-31
    • 2020-07-12
    相关资源
    最近更新 更多