У детей RenderFlex ненулевое сгибание, но входящие ограничения по высоте неограничены, пытались использовать гибкий и расширенный не работает - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть коды ниже. У меня есть Google вокруг

например 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 / render / box.dart ': ошибочное утверждение: строка 1687, позиция 12:' hasSize 'Соответствующий виджет, вызвавший ошибки, был столбец RenderBox не был размечен: RenderFlex # adff1 relayoutBoundary = up15 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE 'package: flutter / src / render / box.dart': ошибочное утверждение: строка 1687, позиция 12: 'hasSize' Соответствующим видящим ошибку виджетом была строка

С этого момента он указывает намой виджет round_card_data_nocolor, который я создал

RenderBox не былвыложен: RenderFlex # 6e81b relayoutBoundary = up14 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE 'package: flutter / src / render / box.dart': Неудачное утверждение: строка 1687 pos 12: 'hasSize' Соответствующий виджет, вызывающий ошибкибыл контейнер RenderBox не был размечен: RenderPadding # 88382 relayoutBoundary = up13 Пакет NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE ': flutter / src / render / box.dart': Неудачное утверждение: строка 1687 поз. 12: 'hasSize' Theсоответствующий виджет, вызвавший ошибку: контейнер RenderBox не был размечен: RenderDecoratedBox # f5086 relayoutBoundary = up12 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE 'пакет: flutter / src / render / box.dart': ошибочное утверждение: строка 1687 pos 12: 'hasSize' Соответствующий виджет, приводящий к ошибке, был Row RenderBox не был размечен: RenderFlex # 72dfe relayoutBoundary = up11 Пакет NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE ': flutter / src / render / box.dart': ошибочное утверждение: строка 1687, позиция 12: 'hasSize' Соответствующий виджет, вызвавший ошибку, был Card RederBox, не был выложен: RenderSemanticsAnnotations # 16c58 relayoutBoundary = up5 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE 'package: flutter / src / render / box.dart': ошибочное утверждение: строка 1687, позиция 12: 'hasSize' Соответствующим видящим ошибку источником был Padding

Вот полные коды для виджета 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)),
      );
    }

1 Ответ

1 голос
/ 11 декабря 2019

ScrollView не определяет ограничение по высоте, только ограничение по ширине. Внутри вашего второго Column похоже, что вы определяете Expanded, что означает, что виджет будет пытаться расширяться по вертикали "без ограничений" из-за ограничения по высоте. Вы можете попробовать удалить Expanded и посмотреть, так ли это, или добавить фиксированную высоту к RoundedCardDataNoColor

...