Как инициализировать конечного члена другим конечным членом в подклассе 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;
  }
}
Другие вопросы по тегам