J'ai ci-dessous les codes. J'ai google autour
par exemple. TextField à l'intérieur de Row provoque une exception de mise en page: impossible de calculer la taille . Le problème est dans mon cas est le suivant
TextFormField( onChanged: (value) => contactNo = value,
J'ai essayé étendu, j'ai essayé flexible etc tout ne fonctionne pas et me donne une erreur. Que dois-je réparer d'autre dans ce cas? J'ai essayé d'ajouter cet enfant: SingleChildScrollView (et même ce mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.stretch, Pourtant les mêmes erreurs.
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",
),
),
],
),
)
],
),
]
)
),
]
),
Voici les erreurs complètes.
Les enfants RenderFlex ont un flex différent de zéro mais les contraintes de largeur entrantes sont illimitées. Le widget causant l'erreur pertinent était Row RenderBox n'était pas disposé: RenderFlex # 03f25 relayoutBoundary = up16 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package: flutter/src/rendering/box.Dart': Échec de l'assertion: ligne 1687 pos 12: 'hasSize' Le widget à l'origine de l'erreur pertinent était Column RenderBox n'a pas été présenté: RenderFlex # adff1 relayoutBoundary = up15 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package: flutter/src/rendering/box.Dart': Échec assertion: line 1687 pos 12: 'hasSize' Le widget à l'origine de l'erreur pertinent était Row
À partir de là, il pointe vers mon widget round_card_data_nocolor que j'ai créé
RenderBox n'a pas été présenté: RenderFlex # 6e81b relayoutBoundary = up14 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package: flutter/src/rendering/box.Dart': Échec de l'assertion: ligne 1687 pos 12: 'hasSize' L'erreur pertinente -causing widget était Container RenderBox n'a pas été présenté: RenderPadding # 88382 relayoutBoundary = up13 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package: flutter/src/rendering/box.Dart': Échec de l'assertion: ligne 1687 pos 12: ' hasSize 'Le widget à l'origine de l'erreur pertinent était Container RenderBox n'a pas été présenté: RenderDecoratedBox # f5086 relayoutBoundary = up12 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE' package: flutter/src/rendering/box.Dart ': Échec d'assertion: ligne 1687 pos 12: 'hasSize' Le widget à l'origine de l'erreur était Row RenderBox n'a pas été présenté: RenderFlex # 72dfe relayoutBoundary = up11 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package: flutter/src/rendering/box.Dart' : Échec de l'assertion: ligne 1687 pos 12: 'hasSize' Le widget à l'origine de l'erreur pertinent était Card RenderBox n'était pas la id out: RenderSemanticsAnnotations # 16c58 relayoutBoundary = up5 NEEDS-Paint NEEDS-COMPOSITING-BITS-UPDATE 'package: flutter/src/rendering/box.Dart': Échec de l'assertion: ligne 1687 pos 12: 'hasSize' Le widget correspondant à l'origine de l'erreur était Padding
Voici les codes complets du widget 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)),
);
}
Un ScrollView ne définit pas une contrainte de hauteur, seulement une contrainte de largeur. Dans votre deuxième Column
, il semble que vous définissiez un Expanded
, ce qui signifie que le widget essaiera de s'étendre verticalement "sans limite" par une contrainte de hauteur. Vous pouvez essayer de supprimer le Expanded
et voir si cela le fait ou en ajoutant une hauteur fixe à RoundedCardDataNoColor