以下のコードがあります。私は周りにグーグルを持っています
例えば Row内のTextFieldによりレイアウト例外が発生:サイズを計算できません 。問題は私の場合、これです
TextFormField( onChanged: (value) => contactNo = value,
私は拡張しようとしました、私は柔軟にしようとしましたなどすべてが機能せず、エラーが発生します。この場合、他に何を修正すればよいですか?私はこの子を追加しようとしました:SingleChildScrollView(そしてこのmainAxisAlignment:MainAxisAlignment.center、crossAxisAlignment:CrossAxisAlignment.stretch、それでも同じエラーです。
Widget _createForm(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
resizeToAvoidBottomInset: true,
resizeToAvoidBottomPadding: false,
backgroundColor: pagebackgroundColor,
appBar: appBar(),
drawer: Theme(
data: Theme.of(context).copyWith(canvasColor: Colors.white),
child: new ReusableWidgets().getDrawer('Sum',context)
),
body: SafeArea(
child: SingleChildScrollView(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
SizedBox(
height: 20.0,
),
Row(
children: <Widget>[
RoundedCardDataNoColor(
child: Row(
//mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SizedBox(width: 5,),
Text(
"Total",
style: plateStyle,
),
],
),
SizedBox(height: 5,),
Expanded(
child:
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
TextFormField(
onChanged: (value) => contactNo = value,
keyboardType: TextInputType.phone,
validator: validateMobile,
maxLength: 10,
decoration: InputDecoration(
labelText: 'Contact No.',
//errorText: "Enter First Name",
),
),
],
),
)
],
),
]
)
),
]
),
ここに完全なエラーがあります。
RenderFlexの子にはゼロ以外のフレックスがありますが、入力幅の制約は無制限です。関連するエラーの原因となるウィジェットはRow RenderBoxがレイアウトされていなかった:RenderFlex#03f25 relayoutBoundary = up16 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.Dart':Failed assertion:line 1687 pos 12: 'hasSize'関連するエラーの原因となるウィジェットはColumn RenderBoxがレイアウトされていませんでした:RenderFlex#adff1 relayoutBoundary = up15 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.Dart':Failedアサーション:行1687 pos 12: 'hasSize'関連するエラーの原因となるウィジェットはRowでした
ここから先は、私が作成した私のround_card_data_nocolorウィジェットを指します
RenderBoxはレイアウトされていませんでした:RenderFlex#6e81b relayoutBoundary = up14 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.Dart':失敗したアサーション:1687行目12: 'hasSize'関連エラーウィジェットの原因はコンテナでしたRenderBoxがレイアウトされていませんでした:RenderPadding#88382 relayoutBoundary = up13 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.Dart':失敗したアサーション:行1687 pos 12: ' hasSize '関連するエラーの原因となるウィジェットはContainer RenderBoxがレイアウトされていませんでした:RenderDecoratedBox#f5086 relayoutBoundary = up12 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE' package:flutter/src/rendering/box.Dart ':失敗したアサーション:行1687 pos 12: 'hasSize'関連するエラーの原因となるウィジェットはRow RenderBoxがレイアウトされていなかった:RenderFlex#72dfe relayoutBoundary = up11 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.Dart' :失敗したアサーション:1687行目12: 'hasSize'関連するエラーの原因となるウィジェットはCard RenderBoxでしたid out:RenderSemanticsAnnotations#16c58 relayoutBoundary = up5 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package:flutter/src/rendering/box.Dart':失敗したアサーション:行1687 pos 12: 'hasSize'関連するエラーの原因となるウィジェットパディングでした
以下は、ウィジェットRoundedCardDataNoColorの完全なコードです。
class RoundedCardDataNoColor extends StatelessWidget {
// ---- props -----
final Widget child;
// --- constant view settings ----
static const double radius = 10.0;
static const double elevation = 5.0;
static const innerPadding = const EdgeInsets.all(8.0);
static const innerPaddingColor = const EdgeInsets.all(0.0);
static const outerPadding = const EdgeInsets.all(0.0);
static const margin = const EdgeInsets.fromLTRB(10, 5, 0, 5);
const RoundedCardDataNoColor({
Key key,
this.child,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Padding(
padding: outerPadding,
child: Card(
margin: margin,
elevation: elevation,
clipBehavior: Clip.antiAlias,
shape: roundShape,
child: Row(children: <Widget>[
new Container(
padding: innerPadding,
decoration: roundDecor,
child: child ,
),
],)
),
);
}
static const roundShape = const RoundedRectangleBorder(
borderRadius: const BorderRadius.only(
topLeft: Radius.circular(radius),
bottomLeft: Radius.circular(radius),
),
);
static const roundDecor = const BoxDecoration(
color: Colors.white,
borderRadius: const BorderRadius.only(
topLeft: const Radius.circular(radius),
bottomLeft: const Radius.circular(radius)),
);
}
ScrollViewは高さの制約を定義せず、幅の制約のみを定義します。 2番目のColumn
内では、Expanded
を定義しているように見えます。これは、ウィジェットが高さの制約によって「無制限」に垂直方向に拡張しようとすることを意味します。 Expanded
を削除して削除できるかどうかを確認するか、RoundedCardDataNoColor
に固定の高さを追加してください。