معلومة خفية في Flutter قد تُحدث فرقًا كبيرًا: كيف تبني ثيمات قابلة لإعادة الاستخدام بسهولة؟
يعد ThemeExtension طريقة لتوسيع السمات المخصصة في Flutter، مما يسمح لك بإضافة سمات إضافية، مثل الألوان أو الخطوط أو البيانات الأخرى القابلة للتخصيص. يتيح لك ذلك تطبيق التصميمات المخصصة وإدارتها بسهولة في جميع أجزاء التطبيق دون الحاجة إلى تكرار نفس القيم في كل مكان.
extension BuildContextCustom on BuildContext {
AppColorsEx get colors => Theme.of(this).extension<AppColorsEx>()!;
}
class AppColorsEx extends ThemeExtension<AppColorsEx> {
final Color primaryColor;
final Color secondaryColor;
AppColorsEx({required this.primaryColor, required this.secondaryColor});
@override
ThemeExtension<AppColorsEx> copyWith({
Color? primaryColor,
Color? secondaryColor,
}) {
return AppColorsEx(
primaryColor: primaryColor ?? this.primaryColor,
secondaryColor: secondaryColor ?? this.secondaryColor);
}
@override
ThemeExtension<AppColorsEx> lerp(
covariant ThemeExtension<AppColorsEx>? other, double t) {
if (other is! AppColorsEx) {
return this;
} else {
return AppColorsEx(
primaryColor: Color.lerp(primaryColor, other.primaryColor, t)!,
secondaryColor: Color.lerp(secondaryColor, other.secondaryColor, t)!);
}
}
}
شرح الكود البرمجي المستخدم
في هذا الكود، قمنا بإنشاء ملحق لون مخصص (AppColorsEx) يتضمن لونين أساسيين: PrimaryColor وSecondaryColor.
يمكن استخدام البرنامج المساعد لتطبيق وتعديل سمات الألوان المخصصة في التطبيق.
تطبيق الألوان المخصصة في MaterialApp
MaterialApp(
title: 'My Application Test',
theme: ThemeData(
extensions: [
AppColorsEx(
primaryColor: Color(0xfffdb56d),
secondaryColor: Color(0xff44a4f3),
)
],
),
home: HomeScreen(),
);
هذا هو المكان الذي قمنا فيه بتعيين ألواننا المخصصة على سمة Flutter الشاملة عبر ThemeData. يمكن استدعاء الألوان المخصصة عبر البرنامج المساعد BuildContextCustom في أي مكان في التطبيق.
يعد BuildContextCustom مكونًا إضافيًا مفيدًا يسمح لك باستخدام السمات المخصصة من خلال سياق Flutter. وهذا يوفر طريقة سهلة للوصول إلى القيم المشتركة، مثل الألوان المخصصة، مما يقلل الحاجة إلى تمرير القيم يدويًا بين المكونات.
مزايا استخدام ThemeExtension في تطبيقات Flutter
القابلية للتوسعة: يسمح ThemeExtension بتوسيع السمات الموجودة دون الحاجة إلى تعديل الكود الأساسي، مما يوفر المزيد من المرونة. التخطيط المركزي: تتم إدارة جميع الألوان أو التصميمات المخصصة من مكان واحد، مما يجعل من السهل التحكم في الشكل والمظهر العام للتطبيق.
سهولة الاستخدام: يمكن الوصول إلى الامتدادات بسهولة من خلال BuildContext، مما يلغي الحاجة إلى تمرير القيم يدويًا.
يؤدي توسيع السمات باستخدام ThemeExtension وBuildContextCustom في Flutter إلى منح المطورين مرونة أكبر في تصميم تطبيقات متطورة وجذابة. باستخدام هذه الأدوات، يمكنك التحكم في الألوان والقيم المخصصة بشكل مركزي وفعال.
