Loading...
Loading...
How to customize your app's theme using Flutter's theming system
npx skill4agent add flutter/skills flutter-themingFlatButtonRaisedButtonOutlineButtonaccentColorcolorAppBarThemeBottomNavigationBarNavigationBarNavigationDestinationDrawerNavigationDrawerNavigationDrawerDestinationToggleButtonsSegmentedButtonButtonSegmentSetFlatButtonTextButtonRaisedButtonElevatedButtonFilledButtonOutlineButtonOutlinedButtonThemeDataColorScheme.fromSeeduseMaterial3accentColoraccentColorBrightnessaccentTextThemeaccentIconThemeMaterialApp(
title: 'App Name',
theme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.deepPurple,
brightness: Brightness.light,
),
// Use colorScheme.secondary instead of accentColor
),
darkTheme: ThemeData(
useMaterial3: true,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.deepPurple,
brightness: Brightness.dark,
),
),
home: const MyHomePage(),
);ThemeData*ThemeDatacardThemeCardThemeDatadialogThemeDialogThemeDatatabBarThemeTabBarThemeDataappBarThemeAppBarThemeDatacolorbackgroundColorbottomAppBarThemeBottomAppBarThemeDatainputDecorationThemeInputDecorationThemeDataThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
appBarTheme: const AppBarThemeData(
backgroundColor: Colors.blue, // Do not use 'color'
elevation: 4.0,
),
cardTheme: const CardThemeData(
elevation: 2.0,
),
);styleFrom()ButtonStyleMaterialStateProperty// Simple override using styleFrom
TextButton(
style: TextButton.styleFrom(
foregroundColor: Colors.blue,
disabledForegroundColor: Colors.red,
),
onPressed: () {},
child: const Text('TextButton'),
)
// State-dependent override using MaterialStateProperty
OutlinedButton(
style: ButtonStyle(
side: MaterialStateProperty.resolveWith<BorderSide>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.pressed)) {
return const BorderSide(color: Colors.blue, width: 2);
}
return const BorderSide(color: Colors.grey, width: 1);
}
),
),
onPressed: () {},
child: const Text('OutlinedButton'),
)thumbVisibility: truealwaysShownSelectableText// Platform-aware button ordering
TextDirection btnDirection = Platform.isWindows
? TextDirection.rtl
: TextDirection.ltr;
Row(
children: [
const Spacer(),
Row(
textDirection: btnDirection,
children: [
TextButton(
onPressed: () => Navigator.pop(context, false),
child: const Text('Cancel'),
),
ElevatedButton(
onPressed: () => Navigator.pop(context, true),
child: const Text('OK'),
),
],
),
],
)FlatButtonRaisedButtonOutlineButtonButtonThemeAppBarThemecolorColorSchemeTheme.of(context).colorScheme.primaryFlatButtonRaisedButtonOutlineButtonaccentColoraccentColorBrightnessaccentTextThemeaccentIconThemecolorScheme.secondarycolorScheme.onSecondaryDataThemeDataCardThemeDataCardThemecolorAppBarThemeAppBarThemeDatabackgroundColor