#flutter #routes #required #non-nullable
Вопрос:
Я пытаюсь использовать свое предыдущее приложение со следующим кодом, но, похоже, в Flutter произошли некоторые обновления, и я получаю следующую ошибку:
import 'package:flutter/material.dart'; class CustomRoutelt;Tgt; extends MaterialPageRoutelt;Tgt; { CustomRoute({ WidgetBuilder builder, RouteSettings settings, }) : super( builder: builder, settings: settings, ); @override Widget buildTransitions( BuildContext context, Animationlt;doublegt; animation, Animationlt;doublegt; secondaryAnimation, Widget child, ) { if (settings.name == '/') { return child; } return FadeTransition( opacity: animation, child: child, ); } } class CustomPageTransitionBuilder extends PageTransitionsBuilder { @override Widget buildTransitionslt;Tgt;( PageRoutelt;Tgt; route, BuildContext context, Animationlt;doublegt; animation, Animationlt;doublegt; secondaryAnimation, Widget child, ) { if (route.settings.name == '/') { return child; } return FadeTransition( opacity: animation, child: child, ); } }
Ошибка:
Параметр «конструктор» не может иметь значение «null» из-за своего типа, но неявное значение по умолчанию равно «null». Попробуйте добавить либо явное значение по умолчанию, отличное от «null», либо модификатор «требуется».
Я попытался добавить или required
или @required
, но ни то, ни другое не сработало.`
Комментарии:
1. После того , как вы добавили
required
, в чем ошибка?2. Я добавил
required
, и ошибка исчезла3. @MiftakhulArzak: Если я добавлю
required
доbuilder
того, как это даст мне эту новую ошибку:The parameter 'required' can't have a value of 'null' because of its type, but the implicit default value is 'null'. Try adding either an explicit non-'null' default value or the 'required' modifier.
4. @Мифтахуларзак: Да, вы правы. Я поставил
required
не в то место!
Ответ №1:
можете ли вы использовать вот так? потому что это не дает ошибки:
import 'package:flutter/material.dart'; class CustomRoutelt;Tgt; extends MaterialPageRoutelt;Tgt; { CustomRoute({ required WidgetBuilder builder, required RouteSettings settings, }) : super( builder: builder, settings: settings, ); @override Widget buildTransitions( BuildContext context, Animationlt;doublegt; animation, Animationlt;doublegt; secondaryAnimation, Widget child, ) { if (settings.name == '/') { return child; } return FadeTransition( opacity: animation, child: child, ); } } class CustomPageTransitionBuilder extends PageTransitionsBuilder { @override Widget buildTransitionslt;Tgt;( PageRoutelt;Tgt; route, BuildContext context, Animationlt;doublegt; animation, Animationlt;doublegt; secondaryAnimation, Widget child, ) { if (route.settings.name == '/') { return child; } return FadeTransition( opacity: animation, child: child, ); } }
Я попытался добавить required
, и это сработало.