#flutter #dart #key #themes
#flutter #dart #Клавиша #темы
Вопрос:
Мне было интересно, существует ли возможность различать разные отдельные виджеты в приложении из класса ThemeData(). Могу ли я, например, использовать key
виджет для получения того же эффекта, class
что и или id
в HTML / CSS?
Предположим, у меня есть следующий код:
import 'package:flutter/material.dart';
ThemeData customTheme(BuildContext context) {
return ThemeData.light().copyWith(
appBarTheme: AppBarTheme(
backgroundColor: customBlueColor,
),
)
}
Есть ли какой-нибудь способ проверить key
или что-то еще в виджете таким образом?
appBarTheme: widgetKeyIs('greenAppBar')
? AppBarTheme(
backgroundColor: customGreenColor,
)
: AppBarTheme(
backgroundColor: customBlueColor,
),
Я хотел бы услышать! Я, конечно, знаю, что могу применить пользовательскую тему к панелям приложений, которые я хочу сделать зелеными, но, возможно, это более чистый способ сделать это.
Ответ №1:
Вероятно, вы могли бы использовать shared_preferences
, добавить общую переменную (bool) isGreenAppBar
. Это поможет вам.
Но проблема здесь будет в том, что он не меняется каждый раз, когда вы меняете его внутри приложения, и изменения будут отражаться только тогда, когда пользователь запускает приложение.
Для поддержки этого сценария вы можете использовать provider
вместе с shared_preferences
.
Использование shared_preferences
необязательно, если вы не хотите, чтобы значение сохранялось и восстанавливалось при запуске приложения.
Это пример использования обоих пакетов. Ссылка theme
, которая в вашем случае может быть isGreenAppBar
.
Вопрос, похоже, похож на тематизацию. Итак, это может ответить на ваш вопрос об использовании ключа для изменения темы панели приложений.