如何在StatelessWidget子类中用其他最终成员初始化最终成员?

时间:2019-05-18 17:13:39

标签: flutter immutability final statelesswidget

我有一个简单的StatelessWidget,它在其构造函数中创建了一个新的StatefulWidget。问题是要创建该窗口小部件,首先需要创建另一个对象。然后,当我将其传递给构造函数时,出现错误

错误:在初始化器中只能访问静态成员。

我在下面做了一个小例子,在这种情况下,不能将成员'a'传递给B的构造函数。如何解决呢?即使它是不可变的,我也必须制作一个StatefulWidget吗?

import 'package:flutter/material.dart';

class Test extends StatelessWidget {
  final A a;
  final B b;

  Test() : a = new A(), b = new B(a), super();

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

class A {

}

class B {
  B(A a);
}

1 个答案:

答案 0 :(得分:1)

不确定是否可以通过初始化程序实现它,但至少可以通过Factory方法来实现

class Test extends StatelessWidget {
  final A a;
  final B b;

  Test._(this.a, this.b);

  factory Test.create() {
    final a = new A();
    final b = B(a);
    return Test._(a, b);
  }

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