I have the error 'Incorrect use of ParentDataWidget' but I don't see where the problem is. I have checked here for other post but don't find anything to help me. I don't use Expanded else where than Column, Row.
(I know the function updateColour can be simplify but I'm following a course at the moment and this is where this project comes from.)
Can you please help me ? I really don't see where the error comes from.
input_page.dart
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'reusable_card.dart';
import 'icon_content.dart';
const bottomContainerHeight = 80.0;
const activeCardColour = Color(0xFF1D1E33);
const inactiveCardColour = Color(0xFF111328);
const bottomContainerColour = Color(0xFFEB1555);
class InputPage extends StatefulWidget {
@override
_InputPageState createState() => _InputPageState();
}
class _InputPageState extends State<InputPage> {
Color maleCardColour = inactiveCardColour;
Color femaleCardColour = inactiveCardColour;
void updateColour(int gender) {
if (gender == 1) {
if (maleCardColour == inactiveCardColour) {
maleCardColour = activeCardColour;
femaleCardColour = inactiveCardColour;
} else {
maleCardColour = inactiveCardColour;
femaleCardColour = activeCardColour;
}
} else {
if (femaleCardColour == inactiveCardColour) {
femaleCardColour = activeCardColour;
maleCardColour = inactiveCardColour;
} else {
femaleCardColour = inactiveCardColour;
maleCardColour = activeCardColour;
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('BMI CALCULATOR'),
),
body: Column(
children: [
Expanded(
child: Row(
children: [
Expanded(
child: GestureDetector(
onTap: () {
setState(() {
updateColour(1);
});
},
child: ReusableCard(
cardChild: IconContent(
icon: FontAwesomeIcons.mars,
label: 'MALE',
),
colour: inactiveCardColour,
),
),
),
Expanded(
child: GestureDetector(
onTap: () {
setState(() {
updateColour(2);
});
},
child: ReusableCard(
cardChild: IconContent(
icon: FontAwesomeIcons.venus,
label: 'Female',
),
colour: inactiveCardColour,
),
),
),
],
),
),
Expanded(
child: ReusableCard(
colour: activeCardColour,
),
),
Expanded(
child: Row(
children: [
Expanded(
child: ReusableCard(
colour: activeCardColour,
),
),
Expanded(
child: ReusableCard(
colour: activeCardColour,
),
),
],
),
),
Container(
color: bottomContainerColour,
margin: EdgeInsets.only(top: 10),
width: double.infinity,
height: bottomContainerHeight,
)
],
),
);
}
}
Reusable_card.dart
import 'package:flutter/material.dart';
class ReusableCard extends StatelessWidget {
final Color colour;
final Widget? cardChild;
ReusableCard({required this.colour, this.cardChild});
@override
Widget build(BuildContext context) {
return Expanded(
child: Container(
child: cardChild,
decoration: BoxDecoration(
color: colour, borderRadius: BorderRadius.circular(10.0)),
margin: EdgeInsets.all(15.0),
),
);
}
}
CodePudding user response:
In the body of the scaffold, a column widget has been added and as the child of the column an expanded widget is added. Here the column has no vertical bounds. Hence the error. Please remove the expanded widget which is inside the column. If you wish to use expanded inside the column wrap the column with a sized box of certain height for example
SizedBox(
height: MediaQuery.of(context).size.height,
child: Column(
children: [
Expanded(
flex: 3,
child: Container(),
),
Expanded(
flex: 2,
child: Container (),
)
]
)
)
CodePudding user response:
I removed the Expanded in ReusableCard and the error was gone.
Thanks