Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何使用无状态小部件子类中的其他最终成员初始化最终成员?_Flutter_Immutability_Final_Statelesswidget - Fatal编程技术网

Flutter 如何使用无状态小部件子类中的其他最终成员初始化最终成员?

Flutter 如何使用无状态小部件子类中的其他最终成员初始化最终成员?,flutter,immutability,final,statelesswidget,Flutter,Immutability,Final,Statelesswidget,我有一个简单的无状态小部件,它在其构造函数中创建一个新的StatefulWidget。问题是要创建这个小部件,首先需要创建另一个对象。然后当我把它传递给构造函数时,我得到了错误 错误:在初始值设定项中只能访问静态成员 我在下面做了一个小例子,在这种情况下,成员“a”不能传递给B的构造函数。如何解决这个问题?即使StatefulWidget可以是不可变的,我也必须创建一个StatefulWidget吗 import 'package:flutter/material.dart'; class T

我有一个简单的无状态小部件,它在其构造函数中创建一个新的StatefulWidget。问题是要创建这个小部件,首先需要创建另一个对象。然后当我把它传递给构造函数时,我得到了错误

错误:在初始值设定项中只能访问静态成员

我在下面做了一个小例子,在这种情况下,成员“a”不能传递给B的构造函数。如何解决这个问题?即使StatefulWidget可以是不可变的,我也必须创建一个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);
}

不确定是否有可能通过初始化器实现,但至少可以通过工厂方法实现

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

啊,聪明!非常感谢。