Как инициализировать конечного члена другим конечным членом в подклассе 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 ответ
Решение
Не уверен в возможности достижения этого с помощью инициализатора, но по крайней мере вы можете сделать то же самое с помощью метода 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;
}
}