-
Notifications
You must be signed in to change notification settings - Fork 266
Open
Description
When you are building UI in Flutter, you will be building a bunch of screens that extend a StatelessWidget or a StatefulWidget and the build() method will contain a bunch of sub widgets that are related to each other via a tree structure. So it is very important to understand and visualise the tree structure of the UI you build in Flutter.
Here is a widget class for an app called Sunflower, and the task for this assignment is to draw a widget tree for this widget class.
class Sunflower extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _SunflowerState();
}
}
class _SunflowerState extends State<Sunflower> {
double seeds = 100.0;
int get seedCount => seeds.floor();
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData().copyWith(
platform: platform,
brightness: Brightness.dark,
sliderTheme: SliderThemeData.fromPrimaryColors(
primaryColor: primaryColor,
primaryColorLight: primaryColor,
primaryColorDark: primaryColor,
valueIndicatorTextStyle: const DefaultTextStyle.fallback().style,
),
),
home: Scaffold(
appBar: AppBar(
title: const Text("Sunflower"),
),
drawer: Drawer(
child: ListView(
children: const [
DrawerHeader(
child: Center(
child: Text(
"Sunflower 🌻",
style: TextStyle(fontSize: 32),
),
),
),
],
),
),
body: Container(
constraints: const BoxConstraints.expand(),
decoration: BoxDecoration(
border: Border.all(
color: Colors.transparent,
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.transparent,
),
),
child: SizedBox(
width: 400,
height: 400,
child: CustomPaint(
painter: SunflowerPainter(seedCount),
),
),
),
Text("Showing $seedCount seeds"),
ConstrainedBox(
constraints: const BoxConstraints.tightFor(width: 300),
child: Slider.adaptive(
min: 20,
max: 2000,
value: seeds,
onChanged: (newValue) {
setState(() {
seeds = newValue;
});
},
),
),
],
),
),
),
);
}
}
You can also get this same code if you run Flutter Dartpad under Samples --> Sunflower.
Make sure to comment on this issue before picking up this task.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels