دليل شامل لبناء تطبيقات بواجهات Flutter باستخدام لغة Python من خلال إطار عمل فلِت. تعلم كيفية إنشاء تطبيقات جذابة ومتعددة المنصات بسهولة.
يعتبر فلِت (Flet) إطار عمل مفتوح المصدر يتيح لك بناء واجهات مستخدم تفاعلية باستخدام Flutter من خلال لغة Python. حتى إذا لم تكن على دراية بـ Flutter أو Dart، يمكنك بناء تطبيقات رائعة عبر الاستفادة من معرفتك بـ Python.
لنبدأ مع تطبيق "مرحباً بالعالم" بسيط لنفهم كيفية عمل فلت:
import flet as ft
def main(page: ft.Page):
# تعيين عنوان الصفحة ودعم RTL
page.title = "مرحباً بالعالم"
page.rtl = True
# إضافة نص للصفحة
page.add(
ft.Text(
value="مرحباً بالعالم من فلت!",
size=30,
color="blue",
weight="bold",
text_align=ft.TextAlign.CENTER,
)
)
# تشغيل التطبيق
ft.app(target=main)
مرحباً بالعالم من فلت!
هذا مثال بسيط لكنه يوضح الهيكل الأساسي لتطبيق فلت. في الأقسام التالية سنتعمق أكثر في كيفية بناء واجهات أكثر تعقيداً وتفاعلية.
قبل البدء في استخدام فلت، تحتاج إلى تثبيت حزمة فلت من خلال مدير الحزم pip. تأكد من أن لديك Python بإصدار 3.7 أو أحدث.
pip install flet
pip3 install flet
pip install flet --upgrade
ملاحظة للمستخدمين الجدد
بعد تثبيت فلت، ننصح بمتابعة دليل البدء السريع وتجربة الأمثلة البسيطة لفهم كيفية عمل فلت قبل الشروع في بناء تطبيق معقد.
يتبع فلت نموذج برمجة بسيط وسهل الفهم. دعنا نستعرض المفاهيم الأساسية التي ستحتاجها لبناء تطبيقات فلت.
كائن Page هو الحاوية الرئيسية لتطبيقك وهو دائمًا أول معامل يتم تمريره إلى دالة التطبيق الرئيسية. يحتوي على كل عناصر واجهة المستخدم ويتحكم في خصائص النافذة أو الصفحة ككل.
title
- عنوان النافذة أو صفحة الويبrtl
- لتحديد اتجاه النص من اليمين لليسارwindow_width
و window_height
- لتحديد أبعاد النافذةpadding
- للتحكم في المساحة الداخلية للصفحةtheme
- لتعيين سمة التطبيق (ألوان، خطوط، الخ)
عناصر التحكم هي المكونات الأساسية لواجهة المستخدم مثل النصوص والأزرار وحقول الإدخال. يمكنك إضافتها إلى الصفحة باستخدام page.add()
أو إضافتها إلى حاويات أخرى.
import flet as ft
def main(page: ft.Page):
# إضافة عناصر تحكم متنوعة
page.add(
ft.Text("هذا نص بسيط"),
ft.ElevatedButton("زر"),
ft.TextField(label="حقل إدخال")
)
ft.app(target=main)
عندما تقوم بتغيير خصائص عناصر التحكم، تحتاج إلى استدعاء page.update()
لتعكس هذه التغييرات على واجهة المستخدم. هذا ما يسمح لك بإنشاء تطبيقات تفاعلية.
import flet as ft
def main(page: ft.Page):
# إنشاء متغيرات العناصر
text_counter = ft.Text("0", size=30)
def increment(e):
# تحديث قيمة النص واستدعاء page.update()
text_counter.value = str(int(text_counter.value) + 1)
page.update()
# إضافة العناصر
page.add(
text_counter,
ft.ElevatedButton("زيادة العداد", on_click=increment)
)
ft.app(target=main)
تستجيب عناصر التحكم لتفاعلات المستخدم من خلال الأحداث. يمكنك تعيين دوال معالجة الأحداث لتنفيذ إجراءات عندما يتفاعل المستخدم مع العناصر.
on_click
- يحدث عند النقر على العنصرon_change
- يحدث عند تغيير قيمة العنصرon_hover
- يحدث عند تمرير المؤشر فوق العنصرon_focus
- يحدث عند التركيز على العنصرon_blur
- يحدث عند فقدان التركيزنصيحة: تتلقى دوال معالجة الأحداث معامل (e) يحتوي على معلومات حول الحدث مثل العنصر الذي تسبب في الحدث وأي بيانات أخرى مرتبطة به.
يوفر فلت مجموعة غنية من عناصر واجهة المستخدم (Controls) التي يمكنك استخدامها لبناء تطبيقات جذابة وتفاعلية. فيما يلي استعراض لأهم العناصر المتاحة.
العنصر | الوصف | مثال |
---|---|---|
Text | يستخدم لعرض النصوص بأحجام وألوان وأنماط مختلفة | ft.Text("نص") |
TextField | حقل إدخال للنصوص والبيانات | ft.TextField(label="الاسم") |
ElevatedButton | زر بتأثير ثلاثي الأبعاد | ft.ElevatedButton("انقر هنا") |
Checkbox | مربع اختيار | ft.Checkbox(label="موافق") |
Image | لعرض الصور من مصادر مختلفة | ft.Image(src="logo.png") |
نبدأ بأكثر العناصر استخداماً: عنصر Text الذي يتيح عرض النصوص بأشكال مختلفة.
import flet as ft
def main(page: ft.Page):
page.add(
ft.Text(
value="نص عادي",
),
ft.Text(
value="نص كبير ملون",
size=30,
color="blue",
weight="bold",
),
ft.Text(
value="نص بخط مائل",
italic=True,
),
ft.Text(
value="نص يحتوي على خط تحته",
selectable=True,
no_wrap=True,
weight=ft.FontWeight.W_700,
decoration=ft.TextDecoration.UNDERLINE,
),
)
ft.app(target=main)
text_align
- محاذاة النصfont_family
- نوع الخطmax_lines
- الحد الأقصى لعدد الأسطرoverflow
- كيفية التعامل مع النص الزائدselectable
- إمكانية تحديد النصstyle
- أسلوب النص من نماذج جاهزة