From 62c67abfe0aaef429898a459ebefa847620d59bb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=BC=A0=E8=90=8C?= <494089941@qq.com>
Date: Tue, 17 May 2022 11:08:24 +0800
Subject: [PATCH] add app theme extension
---
ios/Runner/Info.plist | 2 ++
lib/constants/app_theme.dart | 38 ++++++++++++++++++++++++++++++++
lib/widget/others/user_tool.dart | 7 ++++++
3 files changed, 47 insertions(+)
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 5fa99b90..aea5d0e6 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -93,5 +93,7 @@
io.flutter.embedded_views_preview
+ CADisableMinimumFrameDurationOnPhone
+
diff --git a/lib/constants/app_theme.dart b/lib/constants/app_theme.dart
index 1866ab88..2871d246 100644
--- a/lib/constants/app_theme.dart
+++ b/lib/constants/app_theme.dart
@@ -6,6 +6,15 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
class AppTheme {
static ThemeData get theme {
return ThemeData(primarySwatch: Colors.blue).copyWith(
+ extensions: >[
+ MyAppStyle(
+ mainColor: Colors.blue,
+ bodyText3: TextStyle(
+ fontSize: 30.sp,
+ color: const Color(0xFF333333),
+ ),
+ )
+ ],
progressIndicatorTheme:
ProgressIndicatorThemeData(color: Color(0xFFFFD000)),
primaryColor: Color(0xFFFFD000),
@@ -175,3 +184,32 @@ class SystemStyle {
);
}
}
+
+@immutable
+class MyAppStyle extends ThemeExtension {
+ final TextStyle? bodyText3;
+ final Color? mainColor;
+
+ @override
+ MyAppStyle copyWith({Color? mainColor, TextStyle? bodyText3}) {
+ return MyAppStyle(
+ mainColor: mainColor ?? this.mainColor,
+ bodyText3: bodyText3 ?? this.bodyText3);
+ }
+
+ @override
+ ThemeExtension lerp(ThemeExtension? other, double t) {
+ if (other is! MyAppStyle) {
+ return this;
+ }
+ return MyAppStyle(
+ mainColor: Color.lerp(mainColor, other.mainColor, t),
+ bodyText3: TextStyle.lerp(bodyText3, other.bodyText3, t),
+ );
+ }
+
+ const MyAppStyle({
+ this.bodyText3,
+ this.mainColor,
+ });
+}
diff --git a/lib/widget/others/user_tool.dart b/lib/widget/others/user_tool.dart
index 9a410530..bfc561af 100644
--- a/lib/widget/others/user_tool.dart
+++ b/lib/widget/others/user_tool.dart
@@ -1,3 +1,5 @@
+import 'package:aku_new_community/constants/app_theme.dart';
+import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:provider/provider.dart';
@@ -11,7 +13,12 @@ class UserTool {
static AppProvider get appProvider =>
Provider.of(Get.context!, listen: false);
+
static DataProvider get dataProvider =>
Provider.of(Get.context!, listen: false);
+
+ static MyAppStyle get myAppStyle =>
+ Theme.of(Get.context!).extension()!;
+
UserTool();
}