Как решить «the superclass 'preferredsize' doesn't have a zero argument constructor.» при миграции на flutter 2?

Пользователь

от pauline , в категории: Другие , год назад

Как решить «the superclass 'preferredsize' doesn't have a zero argument constructor.» при миграции на flutter 2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jaylen.trantow , год назад

@pauline 

Ошибка "the superclass 'preferredsize' doesn't have a zero argument constructor" может возникнуть при обновлении приложения на Flutter 2 из-за изменений в архитектуре фреймворка. Эта ошибка происходит, когда класс наследуется от класса PreferredSize, который требует обязательного вызова конструктора с параметрами.


Для решения этой проблемы вам нужно изменить наследование вашего класса и добавить конструктор с параметрами. Вы можете сделать это следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import 'package:flutter/material.dart';

class MyCustomAppBar extends PreferredSize {
  MyCustomAppBar({required Widget child}) : super(
    preferredSize: Size.fromHeight(kToolbarHeight),
    child: child,
  );
  
  @override
  Widget build(BuildContext context) {
    // Ваш код для создания кастомного AppBar
  }
}


В этом примере мы создаем кастомный AppBar и наследуемся от класса PreferredSize, но добавляем конструктор с параметрами, который вызывает конструктор суперкласса и передает ему значение preferredSize и child.


После этого вы можете использовать ваш кастомный AppBar следующим образом:

1
2
3
4
5
6
Scaffold(
  appBar: MyCustomAppBar(
    child: Text('Мой кастомный AppBar'),
  ),
  body: Container(),
);


Это должно решить проблему "the superclass 'preferredsize' doesn't have a zero argument constructor" при миграции на Flutter 2.