Тема MaterialApp через ThemeData в Flutter
Цвета кнопок, фон AppBar
и стили текста по умолчанию собирают в
ThemeData
и передают в MaterialApp(theme: ...).
Потомки Material подхватывают
эти настройки автоматически.
Минимальный набор для учебника - указать
colorScheme или primarySwatch
в старых примерах; в Material 3 чаще
работают с ColorScheme.
Здесь зададим явный ThemeData с
заголовком приложения и включённым
useMaterial3: true:
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Theme demo',
theme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(seedColor: Colors.teal),
appBarTheme: const AppBarTheme(
centerTitle: true,
),
),
home: const ThemeHomePage(),
);
}
}
class ThemeHomePage extends StatelessWidget {
const ThemeHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Theme')),
body: Center(
child: ElevatedButton(
onPressed: () {},
child: const Text('Themed button'),
),
),
);
}
}
Задайте ThemeData с семенем
Colors.deepPurple и
floatingActionButtonTheme, где
backgroundColor -
Colors.amber. Проверьте FAB на экране.