Skip to content

Instantly share code, notes, and snippets.

@AlexKenbo
Created February 9, 2020 15:10
Show Gist options
  • Save AlexKenbo/499e61cd0421a6437a96174782082cf6 to your computer and use it in GitHub Desktop.
Save AlexKenbo/499e61cd0421a6437a96174782082cf6 to your computer and use it in GitHub Desktop.
flutter keys part 4
import 'package:flutter/material.dart';
import 'dart:math';
void main() {
runApp(new MaterialApp(home: PositionedTiles()));
}
class PositionedTiles extends StatefulWidget {
@override
State<StatefulWidget> createState() => PositionedTilesState();
}
class PositionedTilesState extends State<PositionedTiles> {
// Stateful tiles now wrapped in padding (a stateless widget) to increase height
// of widget tree and show why keys are needed at the Padding level.
List<Widget> tiles = [
Padding(
padding: const EdgeInsets.all(8.0),
child: StatefulColorfulTile(key: UniqueKey()),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: StatefulColorfulTile(key: UniqueKey()),
),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Row(children: tiles),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.sentiment_very_satisfied), onPressed: swapTiles),
);
}
swapTiles() {
setState(() {
tiles.insert(1, tiles.removeAt(0));
});
}
}
class StatefulColorfulTile extends StatefulWidget {
StatefulColorfulTile({Key key}) : super(key: key); // попробуй закоментировать
@override
ColorfulTileState createState() => ColorfulTileState();
}
class ColorfulTileState extends State<StatefulColorfulTile> {
Color myColor;
@override
void initState() {
super.initState();
myColor = UniqueColorGenerator().getColor();
}
@override
Widget build(BuildContext context) {
return Container(
color: myColor, child: Padding(padding: EdgeInsets.all(70.0)));
}
}
class UniqueColorGenerator {
UniqueColorGenerator();
var randomGenerator = Random();
List<Color> _listColors = [
Colors.pinkAccent,
Colors.brown,
Colors.green,
Colors.purple,
Colors.yellow
];
Color getColor() {
return _listColors[randomGenerator.nextInt(4)];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment