π Widget
, Element
, SemanticsNode
μ μλ³μμ΄λ€
π λμΌν μνμ λμΌν μμ ―μΌλ‘ ꡬμ±λ μμ
μ μ¬κ΅¬μ±νκ±°λ μΆκ°/μμ νλ κ²½μ° μ¬μ©λλ€
...
class KeyTest extends StatefulWidget {
const KeyTest({super.key});
State<KeyTest> createState() => _KeyTestState();
}
class _KeyTestState extends State<KeyTest> {
List<Widget> tiles = [
StatelessColorfulTile(),
StatelessColorfulTile(),
];
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Key Test'),
),
body: Row(children: tiles),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
tiles.insert(1, tiles.removeAt(0));
});
},
child: const Icon(Icons.sentiment_very_satisfied),
),
);
}
}
class StatelessColorfulTile extends StatelessWidget {
final Color myColor = UniqueColorGenerator.getColor();
StatelessColorfulTile({super.key});
Widget build(BuildContext context) {
return Container(
color: myColor,
child: const Padding(padding: EdgeInsets.all(70.0)),
);
}
}
...
...
class KeyTest extends StatefulWidget {
const KeyTest({super.key});
State<KeyTest> createState() => _KeyTestState();
}
class _KeyTestState extends State<KeyTest> {
List<Widget> tiles = [
const StatefulColorfulTile(),
const StatefulColorfulTile(),
];
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Key Test'),
),
body: Row(children: tiles),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
tiles.insert(1, tiles.removeAt(0));
});
},
child: const Icon(Icons.sentiment_very_satisfied),
),
);
}
}
class StatefulColorfulTile extends StatefulWidget {
const StatefulColorfulTile({super.key});
State<StatefulColorfulTile> createState() => _StatefulColorfulTileState();
}
class _StatefulColorfulTileState extends State<StatefulColorfulTile> {
final Color myColor = UniqueColorGenerator.getColor();
Widget build(BuildContext context) {
return Container(
color: myColor,
child: const Padding(padding: EdgeInsets.all(70.0)),
);
}
}
...
Stateful Classλ‘ λ°κΎΈλ κ²½μ° μμ λ³νμ΄ μ λλ‘ μ΄λ£¨μ΄μ§μ§ μμμ μ μ μλ€
(widget tree μ°Έμ‘°)
...
class KeyTest extends StatefulWidget {
const KeyTest({super.key});
State<KeyTest> createState() => _KeyTestState();
}
class _KeyTestState extends State<KeyTest> {
List<Widget> tiles = [
// Key μ½μ
StatefulColorfulTile(key: UniqueKey()),
StatefulColorfulTile(key: UniqueKey()),
];
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Key Test'),
),
body: Row(children: tiles),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
tiles.insert(1, tiles.removeAt(0));
});
},
child: const Icon(Icons.sentiment_very_satisfied),
),
);
}
}
class StatefulColorfulTile extends StatefulWidget {
// μμ±μ λ§€κ°λ³μλ‘ key λ°κΈ°
const StatefulColorfulTile({required Key key}) : super(key: key);
State<StatefulColorfulTile> createState() => _StatefulColorfulTileState();
}
class _StatefulColorfulTileState extends State<StatefulColorfulTile> {
final Color myColor = UniqueColorGenerator.getColor();
Widget build(BuildContext context) {
return Container(
color: myColor,
child: const Padding(padding: EdgeInsets.all(70.0)),
);
}
}
...