Générer des couleurs aléatoires
return new RaisedButton(
padding: EdgeInsets.symmetric(vertical: 30.0),
color: Colors.primaries random List <blue,green>,
Vous pouvez utiliser la classe Random
pour le faire:
Mais si vous souhaitez modifier la couleur lorsque vous appuyez sur le bouton, vous devez utiliser une variable StatefulWidget
. Un exemple simple est comme ci-dessous:
import 'package:flutter/material.Dart';
import 'Dart:math';
void main() {
runApp(
MaterialApp(
home: MyApp(),
),
);
}
class MyApp extends StatefulWidget {
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
List colors = [Colors.red, Colors.green, Colors.yellow];
Random random = new Random();
int index = 0;
void changeIndex() {
setState(() => index = random.nextInt(3));
}
@override
Widget build(BuildContext context) {
return Center(
child: RaisedButton(
onPressed: () => changeIndex(),
child: Text('Click'),
color: colors[index],
),
);
}
}
En outre, il existe un paquetage appelé random_pk by pawankumar , qui nous donnera des couleurs aléatoires à chaque appel de la méthode de construction de votre application.
Ceci est ma façon d'obtenir une couleur aléatoire:
Color((math.Random().nextDouble() * 0xFFFFFF).toInt() << 0).withOpacity(1.0)
Cela générera une couleur différente pour le bouton chaque fois que la méthode de construction de l'application est appelée.
import 'package:flutter/material.Dart';
import 'Dart:math';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return new MaterialApp(
title: "Raised Button",
theme: new ThemeData(
primarySwatch: Colors.teal,
),
home: new HomePage());
}
}
class HomePage extends StatefulWidget {
@override
HomePageState createState() => new HomePageState();
}
class HomePageState extends State<HomePage> {
//contains the colours for the circle Avatars
final List<Color> circleColors = [Colors.red, Colors.blue, Colors.green];
Color randomGenerator() {
return circleColors[new Random().nextInt(2)];
}
@override
Widget build(BuildContext context) {
return Center(
child: RaisedButton(
onPressed: () => {},
child: Text('Click'),
color: randomGenerator(),
),
);
}
}
Une autre façon d’obtenir des tonnes de couleurs consiste à utiliser la classe Random
avec Color.fromARGB
ou Color.fromRGBO
:
import 'Dart:math';
import 'package:flutter/material.Dart';
void main() {
runApp(MaterialApp(home: MyPage()));
}
class MyPage extends StatefulWidget {
@override
_MyPageState createState() => new _MyPageState();
}
class _MyPageState extends State<MyPage> {
final Random _random = Random();
Color _color = Color(0xFFFFFFFF);
void changeColor() {
setState(() {
_color = Color.fromARGB(
//or with fromRGBO with fourth arg as _random.nextDouble(),
_random.nextInt(256),
_random.nextInt(256),
_random.nextInt(256),
_random.nextInt(256),
);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: InkWell(
onTap: changeColor,
child: Container(
color: _color,
),
),
);
}
}
Si vous utilisez Color.fromRGBO
:
Le quatrième argument devrait être compris entre 0.0
et 1.0
et, heureusement, nous avons _random.nextDouble()
qui donne une valeur comprise entre 0.0
et 1.0
au hasard.
Au fait: