Как вы можете заставить виджет наследовать от другого виджета?- флаттер - PullRequest
0 голосов
/ 04 июля 2019

Я хочу иметь возможность наследовать, скажем, от базового IconButton, который имеет несколько свойств. Кнопки, которые наследуются от этого класса, должны иметь доступ к свойствам базового класса, не переопределяя их.

class BaseButton extends StatelessWidget {
  final IconData icon;
  final double size;
  final Color color;
  final Function onPressed;
  const BaseButton({
    Key key,
    this.icon,
    this.size = 30,
    this.color = Colors.white,
    this.onPressed,
  }) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return IconButton(
      onPressed: onPressed,
      icon: Icon(icon),
      iconSize: size,
      color: color,
    );
  }
}

Я хотел бы использовать этот базовый класс для генерации виджетов без особых хлопот:

class AddButton extends BaseButton {
  @override
  Widget build(BuildContext context) {
    return BaseButton(icon: Icons.add);
  }
}

class CancelButton extends BaseButton {
  @override
  Widget build(BuildContext context) {
    return BaseButton(icon: Icons.close);
  }
}

И я хочу иметь возможность легко получить доступ к свойствам унаследованного базового класса.

1 Ответ

0 голосов
/ 04 июля 2019

Думаю, вы хотите что-то вроде:

class AddButton extends BaseButton {

  const AddButton({
    Key key,
    double size,
    Color color,
    this.onPressed,
  }) : super(key: key, icon: Icons.add, size: size, color: color, onPressed: onPressed);
}

class CancelButton extends BaseButton {

 const CancelButton({
    Key key,
    double size,
    Color color,
    this.onPressed,
  }) : super(key: key, icon: Icons.close, size: size, color: color, onPressed: onPressed);
}

Нет необходимости переопределять сборку в AddButton или CancelButton.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...