【问题标题】:Flutter Invalid constant value for padding valueFlutter 填充值的常量值无效
【发布时间】:2021-05-22 20:29:43
【问题描述】:

我有一个 Widget 包裹在 Padding 中。我想将rightPadding分别添加到当前设备的width。 这是我尝试过的:

  child: Padding(
    padding: const EdgeInsets.only(
        top: 8,
        bottom: 8,
        right: MediaQuery.of(context).size.width / 30), // -> error
    child: Image.asset('assets/images/person.png'),
  ),

但我得到了错误:

无效的常量值

为什么会这样,我该如何解决这个问题?

【问题讨论】:

  • 如果您将整个小部件分配为常量,那么您就不能拥有像正确的变量值。

标签: flutter dart widget flutter-layout padding


【解决方案1】:

您需要在EdgeInsets 之前删除const。为什么?因为如果您使用 var(MediaQuery.of(context).size.width),它就不能保持不变。

试试这个:

child: Padding(
    padding: EdgeInsets.only(
        top: 8,
        bottom: 8,
        right: MediaQuery.of(context).size.width / 30), // -> error
    child: Image.asset('assets/images/person.png'),
  ),

【讨论】:

  • 就是这样,谢谢!但是为什么const 会摆在首位呢?
  • const 是在编译时构建的。这样,它比每次都重建它要快。缺点是,您不能使用动态值(vars),因为您在运行时设置 right 填充,编译器会抱怨。请标记为已解决。谢谢!
猜你喜欢
  • 2022-01-01
  • 2017-11-11
  • 2020-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
  • 1970-01-01
  • 2021-11-20
相关资源
最近更新 更多