mirror of
https://github.com/flutter/samples.git
synced 2025-11-10 23:08:59 +00:00
97 lines
3.6 KiB
Dart
97 lines
3.6 KiB
Dart
// Copyright 2019 The Flutter team. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import 'package:flutter/material.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
|
|
class GalleryThemeData {
|
|
static const _lightFillColor = Colors.black;
|
|
static const _darkFillColor = Colors.white;
|
|
|
|
static Color _lightFocusColor = Colors.black.withOpacity(0.12);
|
|
static Color _darkFocusColor = Colors.white.withOpacity(0.12);
|
|
|
|
static ThemeData lightThemeData =
|
|
themeData(lightColorScheme, _lightFocusColor);
|
|
static ThemeData darkThemeData = themeData(darkColorScheme, _darkFocusColor);
|
|
|
|
static ThemeData themeData(ColorScheme colorScheme, Color focusColor) {
|
|
return ThemeData(
|
|
colorScheme: colorScheme,
|
|
textTheme: _textTheme,
|
|
appBarTheme: AppBarTheme(
|
|
textTheme: _textTheme.apply(bodyColor: colorScheme.onPrimary),
|
|
color: colorScheme.background,
|
|
elevation: 0,
|
|
iconTheme: IconThemeData(color: colorScheme.primary),
|
|
brightness: colorScheme.brightness,
|
|
),
|
|
iconTheme: IconThemeData(color: colorScheme.onPrimary),
|
|
canvasColor: colorScheme.background,
|
|
scaffoldBackgroundColor: colorScheme.background,
|
|
highlightColor: Colors.transparent,
|
|
accentColor: colorScheme.primary,
|
|
focusColor: focusColor,
|
|
snackBarTheme: SnackBarThemeData(
|
|
behavior: SnackBarBehavior.floating,
|
|
backgroundColor: Color.alphaBlend(
|
|
_lightFillColor.withOpacity(0.80),
|
|
_darkFillColor,
|
|
),
|
|
contentTextStyle: _textTheme.subhead.apply(color: _darkFillColor),
|
|
),
|
|
);
|
|
}
|
|
|
|
static ColorScheme lightColorScheme = ColorScheme(
|
|
primary: const Color(0xFFB93C5D),
|
|
primaryVariant: const Color(0xFF117378),
|
|
secondary: const Color(0xFFEFF3F3),
|
|
secondaryVariant: const Color(0xFFFAFBFB),
|
|
background: const Color(0xFFE6EBEB),
|
|
surface: const Color(0xFFFAFBFB),
|
|
onBackground: Colors.white,
|
|
error: _lightFillColor,
|
|
onError: _lightFillColor,
|
|
onPrimary: _lightFillColor,
|
|
onSecondary: const Color(0xFF322942),
|
|
onSurface: const Color(0xFF241E30),
|
|
brightness: Brightness.light,
|
|
);
|
|
|
|
static ColorScheme darkColorScheme = ColorScheme(
|
|
primary: const Color(0xFFFF8383),
|
|
primaryVariant: const Color(0xFF1CDEC9),
|
|
secondary: const Color(0xFF4D1F7C),
|
|
secondaryVariant: const Color(0xFF451B6F),
|
|
background: const Color(0xFF241E30),
|
|
surface: const Color(0xFF1F1929),
|
|
onBackground: Colors.white.withOpacity(0.05),
|
|
error: _darkFillColor,
|
|
onError: _darkFillColor,
|
|
onPrimary: _darkFillColor,
|
|
onSecondary: _darkFillColor,
|
|
onSurface: _darkFillColor,
|
|
brightness: Brightness.dark,
|
|
);
|
|
|
|
static const _regular = FontWeight.w400;
|
|
static const _medium = FontWeight.w500;
|
|
static const _semiBold = FontWeight.w600;
|
|
static const _bold = FontWeight.w700;
|
|
|
|
static TextTheme _textTheme = TextTheme(
|
|
display1: GoogleFonts.montserrat(fontWeight: _bold, fontSize: 20.0),
|
|
caption: GoogleFonts.oswald(fontWeight: _semiBold, fontSize: 16.0),
|
|
headline: GoogleFonts.oswald(fontWeight: _medium, fontSize: 16.0),
|
|
subhead: GoogleFonts.montserrat(fontWeight: _medium, fontSize: 16.0),
|
|
overline: GoogleFonts.montserrat(fontWeight: _medium, fontSize: 12.0),
|
|
body2: GoogleFonts.montserrat(fontWeight: _regular, fontSize: 14.0),
|
|
subtitle: GoogleFonts.montserrat(fontWeight: _medium, fontSize: 14.0),
|
|
body1: GoogleFonts.montserrat(fontWeight: _regular, fontSize: 16.0),
|
|
title: GoogleFonts.montserrat(fontWeight: _bold, fontSize: 16.0),
|
|
button: GoogleFonts.montserrat(fontWeight: _semiBold, fontSize: 14.0),
|
|
);
|
|
}
|