【问题标题】:How to pre-define propeties in classes Flutter如何在 Flutter 类中预定义属性
【发布时间】:2020-09-06 19:37:45
【问题描述】:

我创建了一个 CardText 作为无状态小部件,我会在需要时使用它。但我有一个问题。正如你们所看到的,有些属性我没有标记为@required。我想要的是这些属性有一个预定义的值。就像,假设颜色属性,它应该是 0xFFFFFFFF 直到并且除非我想要某个地方是 0xFF000000。但这些是最终属性,不能基于??= 方法赋值。是的,我知道,将这些属性标记为 @required 将要求我在调用它时定义每个属性。但是有一个预定义的值将帮助我节省很多时间和几行代码。 好吧,任何高手,我不知道如何表达这个问题,所以请随意更改标题。谢谢。

import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';

class CardText extends StatelessWidget {
  final String data;
  final int color;
  final int fontSize;
  final FontWeight fontWeight;
  const CardText(
    this.data, {
    this.color,
    this.fontSize,
    this.fontWeight,
  });


  @override
  Widget build(BuildContext context) {
    return Text(
      data,
      style: GoogleFonts.openSans(
        textStyle: TextStyle(
          fontSize: fontSize,
          fontWeight: fontWeight,
          color: Color(color),
        ),
      ),
    );
  }
}

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您可以使用 : colon syntax:

    const CardText(
        this.data, {
        this.color,
        this.fontSize,
        this.fontWeight,
      }) : color = 0xFFFFFFFF, data = "data"
    

    冒号后面的代码将在大括号内的代码之前执行。从链接的问题

    : 之后的部分称为“初始化列表”。它是一个 , 分隔的列表 可以访问构造函数参数并可以赋值的表达式 实例字段,甚至最终实例字段。这很方便 使用计算值初始化最终字段。

    【讨论】:

      【解决方案2】:

      如果您的参数是可选的,那么您可以立即给出默认值,如下所示

      const CardText({
          this.data, 
          this.color = 0xFFFFFFFF,
          this.fontSize = 14,
          this.fontWeight,
        })
      

      【讨论】:

      • 你的代码和刚才学习的上面提到的代码有什么区别
      猜你喜欢
      • 2019-05-26
      • 2018-08-13
      • 1970-01-01
      • 2022-11-12
      • 2015-09-01
      • 2019-05-20
      • 2011-12-18
      • 2021-01-20
      • 2020-02-13
      相关资源
      最近更新 更多