Flutter изменить изображение заголовка ящика во время выполнения - PullRequest
0 голосов
/ 27 марта 2020

Я ищу способ изменить изображение заголовка ящика, когда я переключаю тему приложения изнутри приложения.

У меня есть этот код в моем проекте, чтобы загрузить изображение в заголовок моего ящика. Но нужно изменить изображение так же, как можно изменить цвета с помощью Theme.of(context).backgroundColor

child: ListView(
  padding: EdgeInsets.zero,
  children: <Widget>[
    UserAccountsDrawerHeader(
    accountName: const Text(_AccountName),
    accountEmail: const Text(_AccountEmail),
    currentAccountPicture: CircleAvatar(
      backgroundColor: Colors.brown,
      child: Text(_AccountAbbr),
    ),
    decoration: BoxDecoration(
    color: Colors.blue,
    image: DecorationImage(
      image: AssetImage('assets/md_drawer_header.jpg'),
      fit: BoxFit.cover,
      ),
    ),
  ),
),

Ответы [ 2 ]

0 голосов
/ 03 апреля 2020

Я смог это исправить самостоятельно. Я не знаю, было ли мое решение лучшим решением, но оно сработало для меня.

Вот как я это сделал.

bool isDarkTheme = false;

class MdHeader extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return UserAccountsDrawerHeader(
      ...

      decoration: BoxDecoration(
        color: Theme.of(context).backgroundColor,
        image: DecorationImage(
          image: isDarkTheme
              ? AssetImage('assets/images/md_dh_dark.jpg')
              : AssetImage('assets/images/md_dh_light.jpg'),
          fit: BoxFit.cover,
        ),
      ),
    );
  }

  static headerImageIsDark(bool isDark) {
    isDarkTheme = isDark;
  }
}

Тогда в моем классе, который отвечал за переключение тема во время выполнения я просто назвал метод, как показано ниже.

MdHeader.headerImageIsDark(true);
0 голосов
/ 27 марта 2020

Независимо от того, измените ли вы тему, используя BLoC или Provider, чтобы изменить свою тему, вы можете предоставить свое изображение из другого источника так же, как вы предоставляете свою тему для MaterialApp виджета.

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