feat(ui)!: move last extensions + add extension provider
continuous-integration/drone/pr Build is failing
continuous-integration/drone/pr Build is failing
This commit is contained in:
@@ -17,6 +17,8 @@
|
||||
import 'package:adaptive_theme/adaptive_theme.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
||||
import 'package:wyatt_ui_kit_example/home.dart';
|
||||
import 'package:wyatt_ui_kit_example/theme/themes.dart';
|
||||
|
||||
@@ -43,20 +45,23 @@ class App extends StatelessWidget {
|
||||
initial: AdaptiveThemeMode.light,
|
||||
light: Themes.lightFromTheme(defaultTheme),
|
||||
dark: Themes.darkFromTheme(defaultTheme),
|
||||
builder: (light, dark) => MaterialApp(
|
||||
localizationsDelegates: const [
|
||||
GlobalMaterialLocalizations.delegate,
|
||||
GlobalWidgetsLocalizations.delegate,
|
||||
GlobalCupertinoLocalizations.delegate,
|
||||
],
|
||||
theme: light,
|
||||
darkTheme: dark,
|
||||
supportedLocales: const [
|
||||
Locale('fr', ''),
|
||||
],
|
||||
title: title,
|
||||
home: Home(
|
||||
forceIndex: defaultPage,
|
||||
builder: (light, dark) => ComponentTheme(
|
||||
data: WyattComponentThemeData.wyattComponentThemeData,
|
||||
child: MaterialApp(
|
||||
localizationsDelegates: const [
|
||||
GlobalMaterialLocalizations.delegate,
|
||||
GlobalWidgetsLocalizations.delegate,
|
||||
GlobalCupertinoLocalizations.delegate,
|
||||
],
|
||||
theme: light,
|
||||
darkTheme: dark,
|
||||
supportedLocales: const [
|
||||
Locale('fr', ''),
|
||||
],
|
||||
title: title,
|
||||
home: Home(
|
||||
forceIndex: defaultPage,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
// Copyright (C) 2023 WYATT GROUP
|
||||
// Please see the AUTHORS file for details.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
||||
import 'package:wyatt_ui_kit_example/theme/constants.dart';
|
||||
|
||||
class LoaderTheme extends LoaderThemeExtension {
|
||||
const LoaderTheme({
|
||||
super.colors,
|
||||
super.stroke,
|
||||
});
|
||||
|
||||
factory LoaderTheme.light() => const LoaderTheme(
|
||||
colors: MultiColor([Constants.blue1, Constants.white]),
|
||||
stroke: 15,
|
||||
);
|
||||
|
||||
factory LoaderTheme.dark() => const LoaderTheme(
|
||||
colors: MultiColor([Constants.blue2, Constants.grey2]),
|
||||
stroke: 15,
|
||||
);
|
||||
|
||||
@override
|
||||
ThemeExtension<LoaderThemeExtension> copyWith({
|
||||
MultiColor? colors,
|
||||
double? stroke,
|
||||
}) =>
|
||||
LoaderTheme(
|
||||
colors: colors ?? this.colors,
|
||||
stroke: stroke ?? this.stroke,
|
||||
);
|
||||
|
||||
@override
|
||||
ThemeExtension<LoaderThemeExtension> lerp(
|
||||
covariant ThemeExtension<LoaderThemeExtension>? other,
|
||||
double t,
|
||||
) {
|
||||
if (other is! LoaderTheme) {
|
||||
return this;
|
||||
}
|
||||
return LoaderTheme(
|
||||
colors: MultiColor.lerp(colors, other.colors, t),
|
||||
stroke: lerpDouble(stroke, other.stroke, t),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
// Copyright (C) 2023 WYATT GROUP
|
||||
// Please see the AUTHORS file for details.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
||||
import 'package:wyatt_ui_kit_example/theme/constants.dart';
|
||||
|
||||
final Map<String, TextStyle> _styles = {
|
||||
'gradient-blue': GradientTextStyle.from(
|
||||
GoogleFonts.montserrat(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Constants.blue1,
|
||||
height: 1.8,
|
||||
),
|
||||
const MultiColor(Constants.blueGradient),
|
||||
),
|
||||
'gradient-red': GradientTextStyle.from(
|
||||
GoogleFonts.montserrat(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Constants.red1,
|
||||
height: 1.8,
|
||||
),
|
||||
const MultiColor(Constants.redGradient),
|
||||
),
|
||||
'gradient-green': GradientTextStyle.from(
|
||||
GoogleFonts.montserrat(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Constants.green1,
|
||||
height: 1.8,
|
||||
),
|
||||
const MultiColor(Constants.greenGradient),
|
||||
),
|
||||
'blue': GoogleFonts.montserrat(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Constants.blue1,
|
||||
height: 1.8,
|
||||
),
|
||||
'red': GoogleFonts.montserrat(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Constants.red1,
|
||||
height: 1.8,
|
||||
),
|
||||
'green': GoogleFonts.montserrat(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Constants.green1,
|
||||
height: 1.8,
|
||||
),
|
||||
};
|
||||
|
||||
class RichTextBuilderTheme extends RichTextBuilderThemeExtension {
|
||||
const RichTextBuilderTheme({
|
||||
super.defaultStyle,
|
||||
super.styles,
|
||||
});
|
||||
|
||||
factory RichTextBuilderTheme.light() => RichTextBuilderTheme(
|
||||
defaultStyle: GoogleFonts.montserrat(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Constants.grey3,
|
||||
height: 1.8,
|
||||
),
|
||||
styles: _styles,
|
||||
);
|
||||
|
||||
factory RichTextBuilderTheme.dark() => RichTextBuilderTheme(
|
||||
defaultStyle: GoogleFonts.montserrat(
|
||||
fontSize: 18,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Constants.white,
|
||||
height: 1.8,
|
||||
),
|
||||
styles: _styles,
|
||||
);
|
||||
|
||||
@override
|
||||
ThemeExtension<RichTextBuilderThemeExtension> copyWith({
|
||||
TextStyle? defaultStyle,
|
||||
Map<String, TextStyle>? styles,
|
||||
}) =>
|
||||
RichTextBuilderTheme(
|
||||
defaultStyle: defaultStyle ?? this.defaultStyle,
|
||||
styles: styles ?? this.styles,
|
||||
);
|
||||
|
||||
@override
|
||||
ThemeExtension<RichTextBuilderThemeExtension> lerp(
|
||||
covariant ThemeExtension<RichTextBuilderThemeExtension>? other,
|
||||
double t,
|
||||
) {
|
||||
if (other is! RichTextBuilderTheme) {
|
||||
return this;
|
||||
}
|
||||
return RichTextBuilderTheme(
|
||||
defaultStyle: TextStyle.lerp(defaultStyle, other.defaultStyle, t),
|
||||
styles: styles,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -17,11 +17,7 @@
|
||||
import 'package:adaptive_theme/adaptive_theme.dart';
|
||||
import 'package:flutter/material.dart' hide CardTheme;
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
||||
import 'package:wyatt_ui_kit_example/theme/loader_theme.dart';
|
||||
import 'package:wyatt_ui_kit_example/theme/rich_text_builder_theme.dart';
|
||||
import 'package:wyatt_ui_kit_example/theme/top_bar_theme.dart';
|
||||
|
||||
/// Easely switch between Material and Studio themes.
|
||||
abstract class Themes {
|
||||
@@ -67,17 +63,6 @@ abstract class Themes {
|
||||
textTheme: GoogleFonts.robotoTextTheme(
|
||||
ThemeData.light().textTheme,
|
||||
),
|
||||
extensions: <ThemeExtension<dynamic>>[
|
||||
// Cards
|
||||
CardThemeExtensionDefault.light(),
|
||||
// Buttons
|
||||
FileSelectionButtonThemeExtensionDefault.light(),
|
||||
FlatButtonThemeExtensionDefault.light(),
|
||||
SimpleIconButtonThemeExtensionDefault.light(),
|
||||
SymbolButtonThemeExtensionDefault.light(),
|
||||
// TextInput
|
||||
TextInputThemeExtensionDefault.light(),
|
||||
],
|
||||
);
|
||||
|
||||
static ThemeData get studioLight {
|
||||
@@ -97,41 +82,13 @@ abstract class Themes {
|
||||
),
|
||||
);
|
||||
|
||||
return theme.copyWith(
|
||||
extensions: <ThemeExtension<dynamic>>[
|
||||
// Cards
|
||||
CardThemeExtensionImpl.light(theme: theme),
|
||||
// Buttons
|
||||
FileSelectionButtonThemeExtensionImpl.light(theme: theme),
|
||||
FlatButtonThemeExtensionImpl.light(theme: theme),
|
||||
SimpleIconButtonThemeExtensionImpl.light(theme: theme),
|
||||
SymbolButtonThemeExtensionImpl.light(theme: theme),
|
||||
// Loader
|
||||
LoaderTheme.light(),
|
||||
// Rich Text
|
||||
RichTextBuilderTheme.light(),
|
||||
// TextInput
|
||||
TextInputThemeExtensionImpl.light(theme: theme),
|
||||
TopAppBarTheme.light(),
|
||||
],
|
||||
);
|
||||
return const WyattThemeExtensions().applyExtensionsTo(theme);
|
||||
}
|
||||
|
||||
static ThemeData get materialDark => ThemeData.dark().copyWith(
|
||||
textTheme: GoogleFonts.robotoTextTheme(
|
||||
ThemeData.dark().textTheme,
|
||||
),
|
||||
extensions: <ThemeExtension<dynamic>>[
|
||||
// Cards
|
||||
CardThemeExtensionDefault.dark(),
|
||||
// Buttons
|
||||
FileSelectionButtonThemeExtensionDefault.dark(),
|
||||
FlatButtonThemeExtensionDefault.dark(),
|
||||
SimpleIconButtonThemeExtensionDefault.dark(),
|
||||
SymbolButtonThemeExtensionDefault.dark(),
|
||||
// TextInput
|
||||
TextInputThemeExtensionDefault.dark(),
|
||||
],
|
||||
);
|
||||
|
||||
static ThemeData get studioDark {
|
||||
@@ -154,23 +111,6 @@ abstract class Themes {
|
||||
),
|
||||
);
|
||||
|
||||
return theme.copyWith(
|
||||
extensions: <ThemeExtension<dynamic>>[
|
||||
// Cards
|
||||
CardThemeExtensionImpl.dark(theme: theme),
|
||||
// Buttons
|
||||
FileSelectionButtonThemeExtensionImpl.dark(theme: theme),
|
||||
FlatButtonThemeExtensionImpl.dark(theme: theme),
|
||||
SimpleIconButtonThemeExtensionImpl.dark(theme: theme),
|
||||
SymbolButtonThemeExtensionImpl.dark(theme: theme),
|
||||
// Loader
|
||||
LoaderTheme.dark(),
|
||||
// Rich Text
|
||||
RichTextBuilderTheme.dark(),
|
||||
// TextInput
|
||||
TextInputThemeExtensionImpl.dark(theme: theme),
|
||||
TopAppBarTheme.dark(),
|
||||
],
|
||||
);
|
||||
return const WyattThemeExtensions().applyExtensionsTo(theme);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:wyatt_ui_components/wyatt_ui_components.dart';
|
||||
import 'package:wyatt_ui_kit/wyatt_ui_kit.dart';
|
||||
|
||||
class TopAppBarTheme extends TopBarThemeExtension {
|
||||
const TopAppBarTheme({
|
||||
super.iconTheme,
|
||||
super.backgroundColors,
|
||||
super.secondaryColor,
|
||||
super.titleStyle,
|
||||
super.subTitleStyle,
|
||||
});
|
||||
|
||||
factory TopAppBarTheme.light() => TopAppBarTheme(
|
||||
backgroundColors: const MultiColor.single(
|
||||
Color.fromRGBO(246, 246, 246, 1),
|
||||
),
|
||||
secondaryColor: const Color.fromRGBO(36, 38, 42, 1),
|
||||
titleStyle: GoogleFonts.montserrat(
|
||||
fontWeight: FontWeight.bold,
|
||||
color: const Color.fromRGBO(36, 38, 42, 1),
|
||||
fontSize: 18,
|
||||
),
|
||||
subTitleStyle: GoogleFonts.montserrat(
|
||||
fontWeight: FontWeight.w400,
|
||||
color: const Color.fromRGBO(36, 38, 42, 1),
|
||||
fontSize: 18,
|
||||
),
|
||||
iconTheme: const IconThemeData(color: Color.fromRGBO(36, 38, 42, 1)),
|
||||
);
|
||||
|
||||
factory TopAppBarTheme.dark() => TopAppBarTheme(
|
||||
backgroundColors: const MultiColor([
|
||||
Color.fromRGBO(44, 50, 56, 1),
|
||||
Color.fromRGBO(39, 47, 61, 1),
|
||||
Color.fromRGBO(44, 50, 56, 1),
|
||||
]),
|
||||
secondaryColor: Colors.white,
|
||||
titleStyle: GoogleFonts.montserrat(
|
||||
fontWeight: FontWeight.bold,
|
||||
fontSize: 18,
|
||||
),
|
||||
subTitleStyle: GoogleFonts.montserrat(
|
||||
fontWeight: FontWeight.w400,
|
||||
fontSize: 18,
|
||||
),
|
||||
iconTheme: const IconThemeData(color: Colors.white),
|
||||
);
|
||||
|
||||
@override
|
||||
ThemeExtension<TopBarThemeExtension> copyWith({
|
||||
IconThemeData? iconTheme,
|
||||
MultiColor? backgroundColors,
|
||||
Color? secondaryColor,
|
||||
TextStyle? titleStyle,
|
||||
}) =>
|
||||
TopAppBarTheme(
|
||||
iconTheme: iconTheme ?? this.iconTheme,
|
||||
backgroundColors: backgroundColors ?? this.backgroundColors,
|
||||
secondaryColor: secondaryColor ?? this.secondaryColor,
|
||||
titleStyle: titleStyle ?? this.titleStyle,
|
||||
);
|
||||
|
||||
@override
|
||||
ThemeExtension<TopBarThemeExtension> lerp(
|
||||
covariant ThemeExtension<TopBarThemeExtension>? other,
|
||||
double t,
|
||||
) {
|
||||
if (other is! TopAppBarTheme) {
|
||||
return this;
|
||||
}
|
||||
return TopAppBarTheme(
|
||||
iconTheme: IconThemeData.lerp(iconTheme, other.iconTheme, t),
|
||||
backgroundColors:
|
||||
MultiColor.lerp(backgroundColors, other.backgroundColors, t),
|
||||
secondaryColor: Color.lerp(secondaryColor, other.secondaryColor, t),
|
||||
titleStyle: TextStyle.lerp(titleStyle, other.titleStyle, t),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user