【问题标题】:Flutter Flat Button Color Property Not Working颤振平面按钮颜色属性不起作用
【发布时间】:2020-09-26 07:46:30
【问题描述】:

在颤振应用程序中,我正在尝试为 FlatButton 设置颜色,但它不起作用。在下面找到源代码。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: SafeArea(
      child: Scaffold(
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            FlatButton(
              color: Colors.red,
            ),
            FlatButton(
              color: Colors.green,
            ),
            FlatButton(
              color: Colors.blue,
            ),
          ],
        ),
      ),
    ));
  }
}

输出:

我是初学者,知道我的代码有什么问题吗?

提前致谢

【问题讨论】:

    标签: android android-studio flutter dart flutter-layout


    【解决方案1】:

    您需要提供 child 和 onPressed 参数才能渲染小部件,否则它不会渲染,从而导致 UI 不工作。

    查看我修改的代码:

    import 'package:flutter/material.dart';
    
    final Color darkBlue = Color.fromARGB(255, 18, 32, 47);
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
          debugShowCheckedModeBanner: false,
          home: Scaffold(
            body: Center(
              child: MyWidget(),
            ),
          ),
        );
      }
    }
    
    class MyWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
            home: SafeArea(
          child: Scaffold(
            body: Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
                FlatButton(
                  color: Colors.red,
                  onPressed:()=>printData(),
                  child: Text("click"),
                ),
                FlatButton(
                  color: Colors.green,
                  onPressed:()=>printData(),
                  child: Text("click"),
                ),
                FlatButton(
                  color: Colors.blue,
                  onPressed:()=>printData(),
                  child: Text("click"),
                ),
              ],
            ),
          ),
        ));
      }
    }
    
    void printData(){
      print('Hello');
    }
    

    【讨论】:

      【解决方案2】:

      查看 FlatButton 构造函数的 @required 字段,没有这些字段将无法呈现。

      这是一个带有必填字段的平面按钮。添加你想要的颜色来渲染它。 如果没有颜色,它会以黑色文本和白色背景呈现。

      FlatButton(
        onPressed: () {
          /*...*/
        },
        child: Text(
          "Flat Button",
        ),
      )
      

      【讨论】:

      • 感谢您的回答。对我很有用
      • 很高兴它有帮助!
      【解决方案3】:

      我遇到了同样的问题。我刚刚添加了“disabledColor:Colors.red” 检查屏幕截图。

      enter image description here

      【讨论】:

      • 欢迎来到SO,请直接在答案中发布代码而不是截图
      • 您能否发布一张您在移动设备中获得的截图。如果该按钮颜色不适用?
      • 在将 null 设置为 onpress 方法的内部请使用任何虚拟方法。所以我们可以跟踪和错误来找到解决方案
      猜你喜欢
      • 2021-11-24
      • 2021-10-05
      • 2021-02-28
      • 2021-12-06
      • 2018-04-17
      • 2014-05-22
      • 1970-01-01
      • 2019-12-04
      相关资源
      最近更新 更多