Аргумент динамического типа флаттера - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь передать аргумент динамического типа в Provider.of<T>(context)

Мой код

class CustomInputField extends StatelessWidget {
  final Type stateClass;

  CustomInputField({
    Key key,
    this.stateClass,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    var state = Provider.of<stateClass>(context);

    return TextFormField(
      key: state.key,
      ...
    );
  }
}

Но это дает мне следующую ошибку:

Имя 'stateClass' не является типом, поэтому его нельзя использовать в качестве аргумента типа. Попробуйте исправить имя для существующего типа или определить тип с именем 'stateClass'.

Кто-нибудь знает, как правильно это сделать?

Возможно, это не очень хорошопрактиковаться, а может, даже невозможно. Но дело в том, что я хотел бы создать один CustomInputField виджет для всех полей ввода в моем приложении. Я использую класс ChangeNotifierProvider из пакета Provider и хотел бы передать различные состояния этому виджету CustomInputField

1 Ответ

1 голос
/ 07 ноября 2019

В Dart нельзя динамически передавать тип в generic. Единственный способ сделать это - иметь блок switch / if-else и возвращать объекты с другим типом в общем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...