Flutter - Как изменить цвет фона LicensePage?

Я бы хотел установить цвет фона для каждого экрана, кроме LicensePage какого-то цвета, поэтому я указал scaffoldBackbroundColor через theme аргумент MaterialApp следующее.

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(scaffoldBackgroundColor: Colors.blue.shade200),
      home: HomeScreen(),
    );
  }
}

Это также меняет цвет фона страницы лицензий, поэтому, чтобы снова изменить его на белый, я попытался переопределить scaffoldBackbroundColor, но это не сработало.

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Theme(
        data: Theme.of(context).copyWith(scaffoldBackgroundColor: Colors.white),
        child: Center(
          child: RaisedButton(
            child: const Text('Show licenses'),
            onPressed: () => showLicensePage(context: context),
          ),
        ),
      ),
    );
  }
}

Как мне это сделать?

3 ответа

Решение

Я придумал это, и это сработало.

Scaffold(
  body: Center(
    child: RaisedButton(
      child: const Text('Show licenses'),
      onPressed: () => Navigator.of(context).push(
        MaterialPageRoute<void>(
          builder: (context) => Theme(
            data: Theme.of(context).copyWith(
              scaffoldBackgroundColor: Colors.white,
            ),
            child: LicensePage(...),
          ),
        ),
      ),
    ),
  ),
)

В моем случае я обнаружил, что ThemeData(cardColor) диктует цвет фона LicensePage. Так,

      showLicense(BuildContext context) {
  Navigator.of(context).push(
    MaterialPageRoute<void>(
      builder: (context) => Theme(
        data: ThemeData(
          cardColor: Colors.yellow,
        ),
        child: LicensePage(
          applicationVersion: '0.1',
          applicationIcon: Icon(Icons.person),
          applicationLegalese: 'Legal stuff',
        ),
      ),
    ),
  );
}

Таким образом, вы не можете установить тему, установить цвет с помощью Container

 Scaffold(
        body: Container(
        color: Colors.white,
          child: Center(
            child: RaisedButton(
              child: const Text('Show licenses'),
              onPressed: () => showLicensePage(context: context),
            ),
          ),
        ),
      ),
Другие вопросы по тегам