Перевёл проект на свежую версию Флаттера и получил вот такую ошибку:
The superclass 'PreferredSize' doesn't have a zero argument constructor.
Try declaring a zero argument constructor in 'PreferredSize', or explicitly invoking a different constructor in 'PreferredSize'.
Гугл предложил такое решение, но оно не сработало:
You may not even have to extend PreferredSize you may just wrap an appBar or any other widget inside a PreferredSize and just specify its height.
PreferredSize(
preferredSize: Size.fromHeight(72),
child: AppBar(
title: Text(title, style: TextStyles.h1),
centerTitle: false,
elevation: 0,
brightness: Brightness.light,
backwardsCompatibility: false,
bottom: bottomAppBarWidget,
))
Вот код файла с ошибкой:
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import '../../../size_config.dart';
class CustomAppBar extends PreferredSize {
double? rating;
CustomAppBar({@required this.rating});
@override
Size get preferredSize => Size.fromHeight(AppBar().preferredSize.height);
@override
Widget build(BuildContext context) {
return SafeArea(
child: Padding(
padding:
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(20)),
child: Row(
children: [
SizedBox(
height: getProportionateScreenWidth(40),
width: getProportionateScreenWidth(40),
child: FlatButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(60),
),
color: Colors.white,
padding: EdgeInsets.zero,
onPressed: () => Navigator.pop(context),
child: SvgPicture.asset(
"assets/icons/Back ICon.svg",
height: 15,
),
),
),
Spacer(),
Container(
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 5),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(14),
),
child: Row(
children: [
Text(
"$rating",
style: const TextStyle(
fontSize: 14,
fontWeight: FontWeight.w600,
),
),
const SizedBox(width: 5),
SvgPicture.asset("assets/icons/Star Icon.svg"),
],
),
)
],
),
),
);
}
}