如何在卡片小部件中颤抖地解决“ RenderBox未布局:”

我有一张有三个容器的卡。前两个包含文本,最后一个包含文本旁边的TextFormField。所以我有一行人将两者保持在一起。唯一的事情是,当我添加TextFormField小部件时,它没有出现并且控制台抛出错误

    ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY 

╞═════════════════════════════════════════════════════════

I/flutter (14101): The following assertion was thrown during

performLayout():

I/flutter (14101): BoxConstraints forces an infinite width.

I/flutter (14101): These invalid constraints were provided to

RenderRepaintBoundary's layout() function by the

I/flutter (14101): following function, which probably computed the invalid

constraints in question:

I/flutter (14101): _RenderDecoration._layout.layoutLineBox

(package:flutter/src/material/input_decorator.dart:750:11)

I/flutter (14101): The offending constraints were:

I/flutter (14101): BoxConstraints(w=Infinity, 0.0<=h<=100.0)

I/flutter (14101): Another exception was thrown: RenderBox was not laid out:

RenderPadding#150b0 relayoutBoundary=up3 NEEDS-PAINT

I/flutter (14101): Another exception was thrown:

'package:flutter/src/rendering/shifted_box.dart': Failed assertion: line 310

pos 12: 'child.hasSize': is not true.

I/flutter (14101): Another exception was thrown: RenderBox was not laid out:

RenderPhysicalShape#1d998 relayoutBoundary=up4

代码看起来像

    import 'package:flutter/material.dart';

class Home extends StatefulWidget {

@override

_HomeState createState() => _HomeState();

}

class _HomeState extends State<Home> {

@override

Widget build(BuildContext context) {

return Container(

child: Center(

child: Card(

elevation: 2.0,

child: Column(

mainAxisSize: MainAxisSize.min,

children: <Widget>[

Container(

height: 100.0,

color: Colors.purple,

),

Container(

height: 200.0,

color: Colors.pink,

child: Column(

children: <Widget>[

new RichText(

textAlign: TextAlign.center,

text: TextSpan(

text: 'Some Text',

style: TextStyle(

color: Colors.grey[800],

fontWeight: FontWeight.bold,

fontSize: 17.0),

),

),

new RichText(

softWrap: true,

textAlign: TextAlign.center,

text: TextSpan(

text:

'Some other text',

style: TextStyle(

color: Colors.black54,

fontWeight: FontWeight.normal,

fontSize: 17.0),

),

),

Row(

children: <Widget>[

Text('adfa'),

Text('data'),

Form(

child: TextFormField(),

),

],

)

],

),

),

],

),

),

));

}

}

回答:

简短的答案是,直到孩子拥有尺寸,父母才有尺寸。

TextFormField导致问题。它需要限制宽度。

将其包装成Expanded小部件或Container宽度,例如下面的示例。

Row(

children: <Widget>[

Expanded(

child: TextFormField()

),

],

)

以上是 如何在卡片小部件中颤抖地解决“ RenderBox未布局:” 的全部内容, 来源链接: utcz.com/qa/435387.html

回到顶部