Как инициализировать финального члена с другим финальным членом в подклассе StatelessWidget? - PullRequest
2 голосов
/ 18 мая 2019

У меня есть простой StatelessWidget, который создает новый StatefulWidget в своем конструкторе.Проблема заключается в том, что для создания этого виджета сначала необходимо создать другой объект.И затем, когда я передаю его в конструктор, я получаю ошибку

error: в инициализаторах доступны только статические члены.

Я сделал небольшой пример ниже, в данном случае это член '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 Ответ

1 голос
/ 18 мая 2019

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