Dart 如何使用Flitter及时更改背景色?
我完全无法理解这一点。经过大量的研究和周旋,我找不到一种方法将一个Dart 如何使用Flitter及时更改背景色?,dart,flutter,Dart,Flutter,我完全无法理解这一点。经过大量的研究和周旋,我找不到一种方法将一个定时器.periodic链接到有状态小部件状态的setState。我试图通过增加我定义的颜色值数组,在每一帧(或仅每17毫秒,足够近)改变我的应用程序的背景颜色,使其逐渐改变。我只是不知道如何根据计时器进行实际的更改,我现在完全不知所措 编辑:这是迄今为止该应用程序的完整代码 import 'package:flutter/material.dart'; import 'colors.dart'; import 'dart:mat
定时器.periodic
链接到有状态小部件状态的setState
。我试图通过增加我定义的颜色值数组,在每一帧(或仅每17毫秒,足够近)改变我的应用程序的背景颜色,使其逐渐改变。我只是不知道如何根据计时器进行实际的更改,我现在完全不知所措
编辑:这是迄今为止该应用程序的完整代码
import 'package:flutter/material.dart';
import 'colors.dart';
import 'dart:math';
import 'dart:async';
final Random randProgress = new Random();
final rgb_color_container rgbColorContainer = new rgb_color_container();
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MainApp();
}
}
class MainApp extends StatefulWidget {
@override
MainAppState createState() => new MainAppState();
}
class MainAppState extends State<MainApp> {
int colorSpeed = 1;
int colorProgress = randProgress.nextInt(1530);
@override
Widget build(BuildContext context){
return new MaterialApp(
home: new Scaffold(
),
theme: ThemeData(
canvasColor: rgbColorContainer.light[colorProgress],
primaryColor: rgbColorContainer.dark[colorProgress],
accentColor: rgbColorContainer.dark[colorProgress],
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“颜色.省道”;
导入“dart:math”;
导入“dart:async”;
最终随机进度=新随机();
最终rgb_颜色_容器rgbColorContainer=新rgb_颜色_容器();
void main()=>runApp(新的MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新的MainApp();
}
}
类MainApp扩展StatefulWidget{
@凌驾
MainAppState createState()=>new MainAppState();
}
类MainAppState扩展了状态{
int colorSpeed=1;
int colorProgress=randProgress.nextInt(1530);
@凌驾
小部件构建(构建上下文){
返回新材料PP(
家:新脚手架(
),
主题:主题数据(
canvasColor:rgbColorContainer.light[colorProgress],
primaryColor:rgbColorContainer.dark[颜色进度],
accentColor:rgbColorContainer.dark[颜色进度],
),
);
}
}
以下是基本步骤:
MainAppState
内部的setState()
,或者根据需要,您可以覆盖initState()
计时器。周期性
colorProgress
为colorProgress
指定一个值
计时器你能给我们看一下你的代码吗?@Blasanka刚刚添加了它为什么不使用带a的a?
Timer timer;
@override
void initState() {
super.initState();
timer = new Timer.periodic(new Duration(seconds: 2), (Timer timer) {
setState(() {
//change your colorProgress here
});
});
}
@override
void dispose() {
super.dispose();
timer.cancel();
}