Приводит ли предоставление экземпляров классов в расширенном перечислении 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;
}