Как я могу передать универсальный тип в State
из 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>(){
}
}
_MyWidgetState
нужно расширять State<MyWidget<T>>
не просто State<MyWidget>
и тогда вы можете использовать T
внутри _MyWidgetState
Вы просто указываете тип в своем полном виджете состояния, а затем передаете его в его состояние:
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>()
Вот как команда Flutter решает эту проблему в виджете FutureBuilder. Вместо возвращаемого типа _MyWidgetState<T>
для createState()
вам понадобится State<MyWidget<T>>
.
State<MyWidget<T>> createState() => _MyWidgetState<T>();
Expected to find '>'.