web-dev-qa-db-fra.com

Flutter: Comment créer un générateur de couleurs aléatoires

Générer des couleurs aléatoires 

return new RaisedButton(


    padding:  EdgeInsets.symmetric(vertical: 30.0),
    color: Colors.primaries random  List <blue,green>,
5
Dev Ed

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.

9
Blasanka

Ceci est ma façon d'obtenir une couleur aléatoire:

Color((math.Random().nextDouble() * 0xFFFFFF).toInt() << 0).withOpacity(1.0)
5
Thiago Santos

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(),
          ),
        );
      }
  }
3
Kofi Nartey

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:

  • R- Rouge
  • B- bleu
  • G- Vert
  • O- Opacité
  • A- Alpha
0
Blasanka