Skip to content

Instantly share code, notes, and snippets.

@AlexKenbo
Created February 8, 2020 17:59
Show Gist options
  • Save AlexKenbo/92903bb0931b91da673d1f786fbdce1d to your computer and use it in GitHub Desktop.
Save AlexKenbo/92903bb0931b91da673d1f786fbdce1d to your computer and use it in GitHub Desktop.
When to use keys, part 2 - statefull no key
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> {
List<Widget> tiles = [
StatefulColorfulTile(),
StatefulColorfulTile(),
];
@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 {
@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