更改主题的颜色

时间:2019-12-07 17:38:54

标签: flutter flutter-layout flutter-theme

我想在我的应用程序中更改计数器的颜色。我想这样做:当计数器大于0时将计数器的颜色更改为蓝色。如果计数器小于0则将计数器的颜色更改为红色;如果计数器等于0则将计数器的颜色更改为绿色。可能吗?我只做了2种颜色。

这是我的代码:

    import 'package:flutter/material.dart';

void main() {
  runApp(Myapp());
}

class Myapp extends StatefulWidget {
  @override
  _MyappState createState() => _MyappState();
}

class _MyappState extends State<Myapp> {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Myhomepage(
        title: "My Home Page",
      ),
    );
  }
}

class Myhomepage extends StatefulWidget {
  final String title;

  Myhomepage({this.title});

  @override
  _MyhomepageState createState() => _MyhomepageState();
}

class _MyhomepageState extends State<Myhomepage> {
  int counter = 0;

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
        centerTitle: true,
      ),
      floatingActionButton: FloatingActionButton(
          child: Icon(Icons.add),
          backgroundColor: Colors.grey[850],
          onPressed: () {
            setState(() {
              counter++;
            });
          }),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RaisedButton(
              child: Text(
                "Increase",
              ),
              color: Colors.green,
              onPressed: () {
                setState(() {
                  counter++;
                });
              },
            ),
            Text("The count of press button:"),
            Text(
              "$counter",
              style: Theme.of(context).textTheme.display2.copyWith(color: counter<=0 ? Colors.red : Colors.blue)

            ),
            RaisedButton(
              child: Text(
                "Decrease",
              ),
              color: Colors.red,
              onPressed: () {
                setState(() {
                  counter--;
                });
              },
            ),
          ],
        ),
      ),
    );
  }


}

这是我的结果:

when counter bigger than 0

when counter smaller than 0

when counter equal to 0, note : I wanted the color of the counter to be green that time.

1 个答案:

答案 0 :(得分:0)

这是实现所需系统的一种方法。我只是做了一个返回所需颜色的函数。

visited =  ['A', 'B']
current_nodes =  ['B']
k =  5
visited =  ['A', 'B', 'C']
current_nodes =  ['C']
k =  4
visited =  ['A', 'B', 'C', 'D']
current_nodes =  ['D']
k =  3
[]
visited =  ['A', 'B']
current_nodes =  ['B']
k =  4
visited =  ['A', 'B', 'C']
current_nodes =  ['C']
k =  3
visited =  ['A', 'B', 'C', 'D']
current_nodes =  ['D']
k =  2
[]
visited =  ['A', 'B']
current_nodes =  ['B']
k =  3
visited =  ['A', 'B', 'C']
current_nodes =  ['C']
k =  2
visited =  ['A', 'B', 'C', 'D']
current_nodes =  ['D']
k =  1
['D']
visited =  ['A', 'B']
current_nodes =  ['B']
k =  2
visited =  ['A', 'B', 'C']
current_nodes =  ['C']
k =  1
['C']
visited =  ['A', 'B']
current_nodes =  ['B']
k =  1
['B']
[]
visited =  ['A', 'B', 'D']
current_nodes =  ['B', 'D']
k =  3
visited =  ['A', 'B', 'D', 'C']
current_nodes =  ['C']
k =  2
visited =  ['A', 'B', 'D', 'C']
current_nodes =  ['D']
k =  1
['D']