Flutter Class 属性(基础)

Flutter Class Properties (basics)

如何在 flutter 中将属性传递给小部件 class。

这是一个基本的class

class ToolbarToggle extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
return Text(label);
}}

我希望能够调用它

ToolbarToggle(label: 'a label')

初级问题见谅

class ToolbarToggle extends StatelessWidget {
  
  final String? label;
  
  const ToolbarToggle({this.label, Key? key}) : super(key: key);
  
  @override
  Widget build(BuildContext context) {
    return Text(label ?? 'label is null');
  }}

像这样,你可以传递属性, 建议使用 const 构造函数和 key 参数(以唯一标识 incase)

首先声明一个标签属性,像这样:

class ToolbarToggle extends StatelessWidget {
  final String label;

  @override
  Widget build(BuildContext context) {
    return Text(label);
  }
}

final 表示该值是不可变的,您应该将它添加到 StatelessWidget 上的每个 属性。

现在我们需要声明一个构造函数,这是我们如何做的:

ToolbarToggle(this.label);

这意味着当创建一个ToolbarToggle时,我们可以这样做:ToolbarToggle('some label');。为了使参数命名,我们需要像这样声明构造函数:

ToolbarToggle({this.label});

现在可以调用 ToolbarToggle(label: 'my label');。但这会报错,因为调用构造函数时可能实际上没有传递任何值。要解决此问题,您应该将其设为必需参数,或为其指定默认值:

ToolbarToggle({required this.label});
ToolbarToggle({this.label=''});

这是最终的 class 代码:

class ToolbarToggle extends StatelessWidget {
  ToolbarToggle({required this.label});

  final String label;

  @override
  Widget build(BuildContext context) {
    return Text(label);
  }
}

您错过了使用 label

class ToolbarToggle extends StatelessWidget {
  final String label;
  ToolbarToggle({required this.label});
  @override
  Widget build(BuildContext context) {
   return Text(label);
}}