Приводит ли предоставление экземпляров классов в расширенном перечислении dart к проблемам с производительностью во флаттере?

Я хотел бы использовать расширенное перечисление во флаттере, чтобы предоставить виджет и панель приложений, которые будут использоваться на скаффолде с нижней навигацией.

Приведет ли это к проблемам с производительностью? Будут ли классы создаваться каждый раз, когда я использую перечисление в любом месте кода?

Пример перечисления:

      enum BottomNavPage {
  foo(widget: const FooWidget(), appBar: const FooAppBar()),
  bar(widget: const BarWidget(), appBar: const BarAppBar());

  final Widget widget;
  final AppBar appBar;
  const BottomNavPage({this.widget, this.appBar});
}

Вот как это можно использовать в коде (например, внутри виджета с отслеживанием состояния):

      Widget build(BuildContext context) {
  return Scaffold(
    appBar: _currentPage.appBar,
    body: _currentPage.widget,
    bottomNavigationBar: BottomNavBarWidget());
}

Все идет нормально. Будут ли приведенные ниже примеры создавать новые экземплярыFooWidgetиBarWidgetкаждый раз, когда он где-то используется?

      // Setting a new Page
setState(() => _currentPage = BottomNavPage.foo);
      // Action based on current page
switch(_currentPage) {
  case BottomNavPage.foo:
    // Do something
    break;
  case BottomNavPage.bar:
  default:
    // Something else
    break;
}

0 ответов

Другие вопросы по тегам