Я хочу обновить свой старый скрипт, который я использовал для создания собственного текстового поля. Он работает до нулевой безопасности. Но теперь я получаю три ошибки из этого сценария.
class TextFieldTemplate extends StatelessWidget {
final String ?initialValue;
final bool ?enabled;
final String labelText;
const TextFieldTemplate(
{super.key,
this.initialValue,
this.enabled,
required this.labelText,
})
@override
Future<Widget> build(BuildContext context) async {
return TextFormField(
enabled: enabled,
initialValue: initialValue,
decoration: InputDecoration(
labelText: labelText,
),
);
}
}
Const constructors can't have a body. Try removing either the 'const' keyword or the body.
Empty constructor bodies should be written using a ';' rather than '{}'. Try replacing the constructor body with ';'
'TextFieldTemplate.build' ('Future<Widget> Function(BuildContext)') isn't a valid override of 'StatelessWidget.build' ('Widget Function(BuildContext)')
Как указывает @jamesdlin, предупреждения и ошибки говорят сами за себя.





Удалить асинхронность, вот обновленная версия
class TextFieldTemplate extends StatelessWidget {
final String? initialValue;
final bool? enabled;
final String labelText;
const TextFieldTemplate({
super.key,
this.initialValue,
this.enabled,
required this.labelText,
});
@override
Widget build(BuildContext context) { // Removed async from here
return TextFormField(
enabled: enabled,
initialValue: initialValue,
decoration: InputDecoration(
labelText: labelText,
),
);
}
}
№1 и №2 не являются ошибками. Это предложения, которые вы можете игнорировать, если хотите. Они также должны быть понятными. Для №3 метод
buildне может быть асинхронным. Методbuild, который вы показали, никогда не должен был работать, и нет никакой необходимости в том, чтобы он был асинхронным. Удалите ключевое словоasyncи исправьте для него тип возвращаемого значения простоWidget.