Виджеты и дженерики Flutter StatefulWidget

#flutter

#flutter

Вопрос:

Как я могу передать общий тип в State из a StatefulWidget , здесь я хочу использовать свои дженерики в myMethod<T>

 class MyWidget<T> extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
  
  myMethod<T>(){
    
  }
}
 

Ответ №1:

Вы просто указываете тип в своем виджете state full, а затем передаете его вплоть до его состояния:

 class MyWidget<T> extends StatefulWidget {
  @override
  _MyWidgetState<T> createState() => _MyWidgetState<T>();
}

class _MyWidgetState<T> extends State<MyWidget<T>> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
  
  myMethod<T>() {
    
  }
}
 

Использование:
MyWidget<String>()

Ответ №2:

_MyWidgetState необходимо расширять State<MyWidget<T>> не только State<MyWidget> , а затем вы можете использовать T внутри _MyWidgetState

Комментарии:

1. Expected to find '>'.