web-dev-qa-db-ja.com

RenderFlexの子はゼロ以外のフレックスを持っていますが、入力高さの制約は無制限です。

以下のコードがあります。私は周りにグーグルを持っています

例えば 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)),
      );
    }
2
newbie

ScrollViewは高さの制約を定義せず、幅の制約のみを定義します。 2番目のColumn内では、Expandedを定義しているように見えます。これは、ウィジェットが高さの制約によって「無制限」に垂直方向に拡張しようとすることを意味します。 Expandedを削除して削除できるかどうかを確認するか、RoundedCardDataNoColorに固定の高さを追加してください。

2
Nolence