Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何使用Flitter及时更改背景色?_Dart_Flutter - Fatal编程技术网

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();
      }