【问题标题】:How to initialize final member with other final member in StatelessWidget subclass?如何用 StatelessWidget 子类中的其他最终成员初始化最终成员?
【发布时间】:2019-05-18 17:13:38
【问题描述】:

我有一个简单的 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);
}

【问题讨论】:

    标签: flutter immutability final statelesswidget


    【解决方案1】:

    不确定通过初始化器实现它的可能性,但至少您可以通过工厂方法来实现它

    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;
      }
    }
    

    【讨论】:

    • 啊,聪明!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多