生成随机颜色
return new RaisedButton(
padding: EdgeInsets.symmetric(vertical: 30.0),
color: Colors.primaries random List <blue,green>,
答案 0 :(得分:13)
这是我获得随机颜色的方法:
#include <iostream>
class singltn {
private:
static singltn *instance;
int data;
// Private constructor so that no objects can be created.
singltn() {
data = 0;
}
int _AA;
int _BB;
int _CC;
public:
static singltn *getInstance() {
if (!instance)
instance = new singltn;
return instance;
}
void setup(int AA, int BB, int CC) {
_AA = AA;
_BB = BB;
_CC = CC;
}
int getData() {
return this->data;
}
void setData(int data) {
this -> data = data;
}
int getAA(){
return this->_AA;
}
};
//Initialize pointer to zero so that it can be initialized in first call to getInstance
singltn *singltn::instance = 0;
int main(){
singltn *a = a->getInstance();
a->setup(111,222,333);
std::cout << "dat " << a->getData() << " _AA " << a-> getAA() << std::endl;
a->setData(100);
std::cout << "dat " << a->getData() << " _AA " << a-> getAA() << std::endl;
singltn *b = b->getInstance();
std::cout << "dat " << b->getData() << " _AA " << a-> getAA() << std::endl;
return 0;
}
答案 1 :(得分:11)
您可以使用Random
类来做到这一点:
但是,如果要在按下按钮时更改颜色,则必须使用StatefulWidget
。一个简单的例子如下:
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],
),
);
}
}
此外,还有一个random_pk开发的名为pawankumar的软件包,每次调用您应用的构建方法时,该软件包都会为我们提供随机颜色。
答案 2 :(得分:3)
每次调用应用的构建方法时,都会为按钮生成不同的颜色
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 :(得分:3)
获取大量颜色的另一种方法是将Random
类与Color.fromARGB
或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,
),
),
);
}
}
如果您使用Color.fromRGBO
:
第四个参数应该在0.0
到1.0
的范围内,幸运的是,我们有_random.nextDouble()
给出了介于0.0
和1.0
之间的值。
顺便说一句:
答案 4 :(得分:2)
我们可以为此使用随机类,但是在flutter中有一个 random_color插件,可以帮助我们生成随机颜色,还可以使用以下代码选择高饱和度颜色:
import 'package:random_color/random_color.dart';
RandomColor _randomColor = RandomColor();
Color _color = _randomColor.randomColor(
colorSaturation: ColorSaturation.highSaturation
);
使用以下代码显示浅色:
import 'package:random_color/random_color.dart';
RandomColor _randomColor = RandomColor();
Color _color = _randomColor.randomColor(
colorBrightness: ColorBrightness.light
);
有关更多选项,请阅读此https://pub.dev/packages/random_color#-readme-tab-
答案 5 :(得分:0)
最简单,最好的建议方法是:
步骤1:在pubspec.yaml中添加依赖项 random_color:^ 1.0.3
步骤2:添加导入 导入'package:random_color / random_color.dart';
第3步:在“颜色”属性中编写 颜色:RandomColor()。randomColor();
答案 6 :(得分:0)
我创建了一个flutter应用程序颜色选择器,使您可以在选择颜色时对其进行可视化。如果您希望Flutter Doctor Color Picker
可以使用它答案 7 :(得分:0)
颜色类中有一个内置的材料颜色列表。您可以按以下方式使用它
import 'dart:math';
Icon(
Icons.account_circle,
size: 40,
color: Colors.primaries[Random().nextInt(Colors.primaries.length)],
)
以上是使用随机颜色为列表着色的最简单,最快的方法。您无需维护颜色列表。
答案 8 :(得分:0)
我认为我们需要一个单独的类(可以使用静态或顶级函数)。
别忘了nextInt :"Generates a non-negative random integer uniformly distributed in the range from 0, inclusive, to max, exclusive."。 因此,将“ max”设置为0x100000000(0xFFFFFFFF +1)!
import 'dart:math';
import 'package:flutter/cupertino.dart';
class RandomColor {
static const _MAX_VALUE = 0x100000000;
final _random = Random();
Color nextColor() => Color(_random.nextInt(_MAX_VALUE));
}
答案 9 :(得分:0)
好吧,如果你想要可区分的颜色,这个方法会给出 4096 种不同的颜色,至少有 16 级差异:
var rnd = Random();
var r = rnd.nextInt(16) * 16;
var g = rnd.nextInt(16) * 16;
var b = rnd.nextInt(16) * 16;
Color color = Color.fromARGB(255, r, g, b);
答案 10 :(得分:-1)
import 'dart:math';
import 'dart:ui';
class Util {
static Color randomColor() {
return Color(Random().nextInt(0xffffffff));
}
}
答案 11 :(得分:-1)
要获得随机颜色,请执行下一个操作:
import 'dart:math' as math;
final rnd = math.Random();
Color getRandomColor() => Color(rnd.nextInt(0xffffffff));
答案 12 :(得分:-1)
通过下面的这种方式,您可以使用一行命令获得随机颜色,而无需任何导入:
([...Colors.primaries]..shuffle()).first
这也是 dart 中级联表示法和扩展运算符的一个很好的例子。 Here 您可以找到有关它的更多信息。