By using this site, you agree to the Privacy Policy and Terms of Use.
موافق
عرب فلاترعرب فلاتر
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
قراءة: شرح استخدام ThemeData في فلاتر
شارك
تسجيل الدخول
إشعار أظهر المزيد
Aa
عرب فلاترعرب فلاتر
Aa
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
Search

أقسام الموقع

استكشف جميع أقسام الموقع
قسم Dart في موقع عرب فلاتر

Dart

59 مقالات
قسم Widgets في موقع عرب فلاتر

Widgets

104 مقالات
قسم Packages في موقع عرب فلاتر

Packages

19 مقالات
قسم Tutorials في موقع عرب فلاتر

Tutorials

22 مقالات

أخر المواضيع

استكشف أخر المواضيع المنشورة
شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
Tutorials

شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا

5
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
Tutorials

حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر

10
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
Tutorials

أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات

17
لديك حساب موجود؟ تسجيل الدخول
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
© جميع الحقوق محفوظة موقع عرب فلاتر 2023
عرب فلاتر > Widgets > شرح استخدام ThemeData في فلاتر
Widgets

شرح استخدام ThemeData في فلاتر

عبدالله يوسف
أخر تحديث 2024/11/15
بواسطة عبدالله يوسف اضف تعليق 7 دقيقة للقراءة 5892 مشاهدات 37 2
شارك
شرح استخدام ThemeData في فلاتر
شرح استخدام ThemeData في فلاتر
شارك

خدماتنا البرمجية – عرب فلاتر🚀

خدماتنا البرمجية – عرب فلاتر

ThemeData هي واحدة من أهم المكونات في Flutter Material التي تساعد على تعريف مظهر التطبيق. تسمح ThemeData للمطورين بتعريف مجموعة من الألوان والخطوط والتنسيقات الأخرى التي تستخدم في التصميم العام للتطبيق.

المحتويات
ما هو ThemeData في فلاتر؟خصائص ThemeData في فلاترprimaryColoraccentColorcanvasColorscaffoldBackgroundColorcardColordividerColortextThemeappBarThemebuttonThemeinputDecorationThemetooltipThemeمثال على استخدام ThemeData في فلاتر

ما هو ThemeData في فلاتر؟

يعد ThemeData كائنًا class يحتوي على مجموعة من الخصائص التي تحدد مظهر التطبيق. يتم استخدام هذه الخصائص لتعريف الألوان والخطوط والتنسيقات الأخرى التي تستخدم في التصميم العام للتطبيق.

“اقرأ أيضاً: شرح استخدام ويدجت ListTile في فلاتر“


خصائص ThemeData في فلاتر

تحتوي ThemeData على العديد من الخصائص التي يمكن استخدامها لتعريف مظهر التطبيق. فيما يلي قائمة بجميع خصائص ThemeData وشرح لكل منها بالتفصيل مع أمثلة للاستخدام:

primaryColor

هذه الخاصية تحدد اللون الأساسي للتطبيق. يتم استخدام هذا اللون كخلفية لشريط التطبيق ولأي عناصر أخرى تستخدم هذا اللون.

ThemeData(
  primaryColor: Colors.blue,
)

accentColor

هذه الخاصية تحدد اللون الفرعي للتطبيق. يتم استخدام هذا اللون لتحديد لون بعض العناصر الفرعية مثل الأزرار والشعار.

ThemeData(
  accentColor: Colors.green,
)

“اقرأ أيضاً: شرح استخدام ويدجت AlertDialog في فلاتر“

canvasColor

هذه الخاصية تحدد لون الخلفية للتطبيق. يتم استخدام هذا اللون كخلفية لأي عناصر تستخدم هذا اللون مثل البطاقات card والحاويات.

ThemeData(
  canvasColor: Colors.white,
)

scaffoldBackgroundColor

هذه الخاصية تحدد لون خلفية Scaffold (الإطار). يتم استخدام هذا اللون كخلفية للصفحات ولأي عناصر تستخدم هذا اللون.

ThemeData(
  scaffoldBackgroundColor: Colors.grey,
)

cardColor

هذه الخاصية تحدد لون البطاقة card. يتم استخدام هذا اللون كخلفية للبطاقات ولأي عناصر تستخدم هذا اللون.

ThemeData(
  cardColor: Colors.white,
)

dividerColor

هذه الخاصية تحدد لون الخط الفاصل بين العناصر divider. يتم استخدام هذا اللون للخطوط الفاصلة بين العناصر.

ThemeData(
  dividerColor: Colors.black,
)

textTheme

هذه الخاصية تحدد مظهر النص في التطبيق. يمكن استخدام TextTheme لتحديد الخط وحجمه وأسلوبه ولونه.

ThemeData(
  textTheme: TextTheme(
    headline1: TextStyle(fontSize: 32.0, fontWeight: FontWeight.bold),
    headline2: TextStyle(fontSize: 24.0, fontWeight: FontWeight.w600),
    bodyText1: TextStyle(fontSize: 16.0),
    bodyText2: TextStyle(fontSize: 14.0),
  ),
)

“اقرأ أيضاً: شرح استخدام ويدجت StreamBuilder في فلاتر“

appBarTheme

هذه الخاصية تحدد مظهر شريط التطبيق appBar. يمكن استخدام AppBarTheme لتحديد لون الخلفية ولون النص وحجم الخط وأسلوب النص.

ThemeData(
  appBarTheme: AppBarTheme(
    backgroundColor: Colors.blue,
    foregroundColor: Colors.white,
    titleTextStyle: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold),
  ),
)

buttonTheme

هذه الخاصية تحدد مظهر الأزرار في التطبيق. يمكن استخدام ButtonTheme لتحديد الألوان وحجم الخط وأسلوب النص وحجم الأزرار.

ThemeData(
  buttonTheme: ButtonThemeData(
    buttonColor: Colors.blue,
    textTheme: ButtonTextTheme.primary,
    shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
  ),
)

inputDecorationTheme

هذه الخاصية تحدد مظهر حقول الإدخال في التطبيق. يمكن استخدام InputDecorationTheme لتحديد لون الخلفية ولون الحدود وأسلوب الحدود.

ThemeData(
  inputDecorationTheme: InputDecorationTheme(
    filled: true,
    fillColor: Colors.grey[200],
    border: OutlineInputBorder(
      borderRadius: BorderRadius.circular(10.0),
      borderSide: BorderSide.none,
    ),
  ),
)

tooltipTheme

هذه الخاصية تحدد مظهر أدوات التلميح في التطبيق. يمكن استخدام TooltipTheme لتحديد لون الخلفية ولون النص وحجم الخط وأسلوب النص.

ThemeData(
  tooltipTheme: TooltipThemeData(
    decoration: BoxDecoration(
      color: Colors.black87,
      borderRadius: BorderRadius.circular(5.0),
    ),
    textStyle: TextStyle(color: Colors.white),
  ),
)

“اقرأ أيضاً: شرح استخدام ويدجت SafeArea في فلاتر“


مثال على استخدام ThemeData في فلاتر

يمكن استخدام ThemeData في أي تطبيق Flutter لتعريف مظهر التطبيق. فيما يلي مثال كامل على استخدام ThemeData لتعريف مظهر التطبيق:

import 'package:flutter/material.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'My App',
      theme: ThemeData(
        primarySwatch: Colors.deepPurple,
        textTheme: const TextTheme(
          displayLarge: TextStyle(fontSize: 32.0, fontWeight: FontWeight.bold),
          displayMedium: TextStyle(fontSize: 24.0, fontWeight: FontWeight.w600),
          bodyLarge: TextStyle(fontSize: 16.0),
          bodyMedium: TextStyle(fontSize: 14.0),
        ),
        elevatedButtonTheme: ElevatedButtonThemeData(
          style: ElevatedButton.styleFrom(
            foregroundColor: Colors.white,
            backgroundColor: Colors.deepPurple,
            shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(10.0)),
          ),
        ),
        inputDecorationTheme: InputDecorationTheme(
          filled: true,
          fillColor: Colors.grey[200],
          border: OutlineInputBorder(
            borderRadius: BorderRadius.circular(10.0),
            borderSide: BorderSide.none,
          ),
          hintStyle: const TextStyle(color: Colors.grey),
        ),
        appBarTheme: const AppBarTheme(
          backgroundColor: Colors.deepPurple,
          foregroundColor: Colors.white,
          elevation: 0.0,
          iconTheme: IconThemeData(color: Colors.white),
          titleTextStyle: TextStyle(
              fontSize: 20.0, fontWeight: FontWeight.bold, color: Colors.white),
        ),
        textButtonTheme: TextButtonThemeData(
          style: TextButton.styleFrom(
            foregroundColor: Colors.deepPurple,
            textStyle: const TextStyle(fontSize: 18.0),
          ),
        ),
        cardTheme: CardTheme(
          color: Colors.grey[200],
          shape:
              RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
          elevation: 2.0,
        ),
        dividerTheme: const DividerThemeData(
          thickness: 2.0,
          color: Colors.grey,
        ),
        scaffoldBackgroundColor: Colors.white,
        bottomNavigationBarTheme: const BottomNavigationBarThemeData(
          selectedItemColor: Colors.deepPurple,
          unselectedItemColor: Colors.grey,
          backgroundColor: Colors.white,
          elevation: 4.0,
        ),
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('My App Home'),
        actions: <Widget>[
          IconButton(
            icon: const Icon(Icons.search),
            onPressed: () {},
          ),
          IconButton(
            icon: const Icon(Icons.more_vert),
            onPressed: () {},
          ),
        ],
      ),
      body: Column(
        children: <Widget>[
          const SizedBox(height: 20.0),
          Text(
            'Welcome to my app!',
            style: Theme.of(context).textTheme.displayLarge,
          ),
          const SizedBox(height: 20.0),
          Container(
            padding: const EdgeInsets.all(20.0),
            margin: const EdgeInsets.all(20.0),
            decoration: BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.circular(10.0),
              boxShadow: [
                BoxShadow(
                  color: Colors.grey.withOpacity(0.5),
                  spreadRadius: 2.0,
                  blurRadius: 5.0,
                  offset: const Offset(0, 3),
                ),
              ],
            ),
            child: Column(
              children: <Widget>[
                TextFormField(
                  decoration: const InputDecoration(
                    labelText: 'Username',
                    prefixIcon: Icon(Icons.person),
                  ),
                ),
                const SizedBox(height: 20.0),
                TextFormField(
                  decoration: const InputDecoration(
                    labelText: 'Password',
                    prefixIcon: Icon(Icons.lock),
                  ),
                ),
                const SizedBox(height: 20.0),
                ElevatedButton(
                  onPressed: () {},
                  child: const Text('Login'),
                ),
                const SizedBox(height: 20.0),
                TextButton(
                  onPressed: () {},
                  child: const Text('Forgot Password?'),
                ),
              ],
            ),
          ),
        ],
      ),
      bottomNavigationBar: BottomNavigationBar(
        items: const <BottomNavigationBarItem>[
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: 'Home',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.favorite),
            label: 'Favorites',
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.person),
            label: 'Profile',
          ),
        ],
      ),
    );
  }
}
مثال على استخدام ThemeData في فلاتر
مثال على استخدام ThemeData في فلاتر

في هذا المثال، تم استخدام العديد من الخصائص في ThemeData لتعريف مظهر التطبيق. تم تعريف مظهر الألوان الأساسي باستخدام primarySwatch. تم تعريف الأنماط الأخرى مثل elevatedButtonTheme وinputDecorationTheme وappBarTheme وtextButtonTheme وcardTheme وdividerTheme وbottomNavigationBarTheme. تم استخدام هذه الخصائص في العناصر المختلفة في التطبيق مثل شريط التطبيق وحقول الإدخال والأزرار والبطاقات والفواصل وشريط التنقل السفلي. ويظهر تأثير هذه الخصائص في تحسين مظهر التطبيق بشكل عام.

“اقرأ أيضاً: كيفية تثبيت Flutter على نظام ويندوز 2023“


في هذا المقال، تعرفنا على استخدام ThemeData في Flutter وشرحنا جميع خصائصها بالتفصيل. يمكن استخدام هذه الخصائص لتعريف مظهر التطبيق وجعله يبدو أكثر جاذبية واحترافية. ويمكنك استخدام هذه الخصائص في أي تطبيق Flutter تريد إنشاؤه.

 

Arab Flutter Community 🚀

انضم إلى مجتمع Arab Flutter
شارك هذا المقال
فيسبوك تويتر Whatsapp Whatsapp لينكد ان تلغرام نسخ الرابط
Avatar of عبدالله يوسف
بواسطة عبدالله يوسف Founder and CEO at ArabFlutter
تابع:
أنا عبدالله يوسف، مهندس مصري ومؤسس موقع عرب فلاتر، ملهم بشغف التكنولوجيا والإبداع. كمصمم مواقع ومبرمج تطبيقات موبايل باستخدام Flutter، أستمتع بخلق عوالم رقمية فريدة ومبتكرة. تتجلى مواهبي في تصميم وتطوير واجهات مستخدم تفاعلية، حيث يمزج الجانب الجمالي بالدقة الهندسية. ما يميزني هو إلمامي الواسع بتقنيات البرمجة والتصميم، ومقدرتي على تطوير تطبيقات متنوعة عبر منصات مختلفة. أعتبر نفسي مبدعًا وملتزمًا، حيث أسعى دائمًا لتحقيق تحسين مستمر في مهاراتي وتقنياتي. أستمتع بتحديات العمل الجماعي وأؤمن بأهمية الابتكار والتطور. بفضل إبداعي والتزامي، أسعى لتقديم حلول فعّالة تلبي توقعات العملاء وتفوق عن المألوف.
اترك تعليقا اترك تعليقا

اترك تعليقاً إلغاء الرد

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
شرح الـ Event Loop في Flutter وجعل التطبيق لا يتوقف أبدًا
Tutorials
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
حل مشكلة التوافق بين Java و Kotlin و Gradle في فلاتر
Tutorials
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
أفضل الـ Packages في Flutter لتسريع تطوير التطبيقات
Tutorials
طريقة انشاء المجلدات باستخدام Dart
طريقة انشاء المجلدات باستخدام كود Dart تلقائيًا
Tutorials

مقالات ذات الصلة

اطلع على المزيد من المقالات المتعلقة بهذا الموضوع!
شرح استخدام ويدجت SingleChildScrollView في فلاتر
Widgets

شرح استخدام SingleChildScrollView في فلاتر

26 1
شرح استخدام ويدجت WillPopScope في فلاتر
Widgets

شرح استخدام ويدجت WillPopScope في فلاتر

19 1
شرح استخدام ويدجت RichText في فلاتر 
Widgets

شرح استخدام ويدجت RichText في فلاتر 

20
شرح استخدام ويدجت TextButton في فلاتر
Widgets

شرح استخدام ويدجت TextButton في فلاتر

20
شرح استخدام ويدجت OutlinedButton في فلاتر
Widgets

شرح استخدام ويدجت OutlinedButton في فلاتر

28 1
شرح استخدام ويدجت PopupMenuButton في فلاتر
Widgets

شرح استخدام ويدجت PopupMenuButton في فلاتر

14
أظهر المزيد
شعار موقع عرب فلاتر شعار موقع عرب فلاتر

About US

Quick Links

  • خدماتنا
  • من نحن
  • اتصل بنا
  • اتفاقية استخدام
  • سياسة الخصوصية
© جميع الحقوق محفوظة موقع عرب فلاتر 2023
  • Dart
  • Widgets
  • Packages
  • Tutorials
  • Flutter Roadmap
  • تثبيت Dart
  • تثبيت Flutter
adbanner
تم اكتشاف مانع إعلانات
مرحبًا، يرجى إيقاف مانع الإعلانات. الإعلانات تُساهم في دعم موقعنا وتغطية جزء من تكاليف الاستضافة وتطوير المحتوى. شكرًا لتفهمك ودعمك.
Okay, I'll Whitelist
Welcome Back!

Sign in to your account

هل نسيت كلمة المرور؟