Параметр «конструктор» не может иметь значение «null» из-за своего типа, но неявное значение по умолчанию равно «null»

#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 , и это сработало.