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),
),
),
),
),