التخطّي إلى المحتوى
menumenu tanreiexpand_morecontrasttranslate
tanreiexpand_more
البدءWebReactSwiftUIJetpack ComposeFlutterReact Nativeالإعدادات الجاهزةنظام التصميم الخاص بكاستخدام Tanrei مع وكلاء الذكاء الاصطناعيالعلامة التجاريةرموز التصميمأنظمة التصميم والتخصيصTheme Studioاللونالطباعةالأيقوناتالشكلالارتفاعالحركةحالات التفاعلالسلوكالتخطيطإمكانية الوصولالكلماترموز الألوانرموز السلّم الطباعيرموز الشكلرموز الارتفاعرموز الحركةرموز الحالةرموز التباعد والقياسالمكوّناتالزرزر الإجراء الرئيسيالزر المقسَّممجموعة الأزرارزر مع قائمةشريط الأدواتزر النسخخانة الاختيارزر الاختيارمفتاح التبديلالرقاقةقائمة الخياراتشريط التمريرحقل شريط التمريرالتقويمDateTimePickerمجموعة الحقولمجموعة أزرار الاختيارمجموعة خانات الاختيارعنصر الاختيارحقل الاختيارشريط القوائمرفع الملفاتمنتقي الملفات متقدّمساحة الإفلاتحقل إدخال النص متقدّمحقل النصحقل الرقاقاتالحقلمربع التحرير والسرد متقدّمحقل التحرير والسردحقل إدخال العدد متقدّمحقل العددحقل إدخال اللون متقدّمحقل اللونحقل إدخال الرمز لمرة واحدة متقدّمحقل الرمز لمرة واحدةحقل إدخال النص المدمج متقدّممربع كتابة الرسائلالبطاقةالفاصلالطبقة النمطية متقدّممربع الحوارالقائمة (list)صف القائمةاللوحة السفليةاللوحة الجانبيةالعرض الدوّاركتلة الشيفرةالجدولاللوحة المنبثقةالخطواتالأكورديونقائمة الوصفالشكل التوضيحيهيكل التطبيقرأس الصفحةالعرض الشجريالخط الزمنيمعاينة الصورمقبض تغيير الحجمالإطار القابل لتغيير الحجممنطقة التمريرالشارةمؤشر التقدمالعدّادعارض الأرقام المتحرّكمؤشر التحميلشريط الإشعار (Snackbar)التلميحاختصار لوحة المفاتيحالوسمالشيفرة المضمَّنةالتنويهالصورة الرمزيةالحالة الفارغةمجموعة الوسومهيكل التحميلعنصر الملفمربع اللونالنص المتحركعلامات التبويبعرض التبويباتشريط التطبيقشريط التنقلدرج التنقلالبحثالرابطالتنقل بين الصفحاتروابط السابق والتاليمؤشر الخطواتمسار التنقلجدول المحتوياتبطاقة الرابطقائمة FABالحالةكيف يُبنى Tanreiالمساهمةالترخيص والإسناد
الرئيسيةالبدءFlutter

Flutter

أضف Tanrei إلى تطبيق Flutter.

content_copyعرض بتنسيق Markdown

الحزمة tanrei مكتوبة بلغة Dart وحدها. توفّر عناصر واجهة (widgets) و TanreiTheme موروثًا وثوابت رموز (tokens) مولَّدة، ولا تعتمد على MaterialApp ولا على CupertinoApp؛ فهي تعمل داخل أيٍّ منهما، أو داخل WidgetsApp مجرّد.

لم يُنشر بعد

tanrei غير موجودة بعدُ على pub.dev. تُنشر المنصة حين تلحق بالمواصفات الحالية، والتكامل المستمر (CI) الخاص بـ Flutter متوقف حتى ذلك الحين. يبيّن قسم «من الشيفرة المصدرية» أدناه كيف تُضاف الحزمة من chnotchy/tanrei، ويبيّن قسم «بعد نشرها» طريقة التثبيت حينها.

التثبيت

من الشيفرة المصدرية

لا تُبنى اليوم

لم تلحق حزمة Flutter بعد بالمواصفات والرموز (tokens) الحالية: كُتبت مصادرها على إصدار سابق من شيفرة الرموز المولَّدة، ولا تُترجَم (compile) على شيفرة اليوم. والتكامل المستمر (CI) الخاص بها متوقف إلى أن تلحق، وصفحة الحالة تَسِم مكوّناتها بأنها متأخرة. الخطوات أدناه هي طريقة إضافتها إلى تطبيق، وتعمل حين تلحق الحزمة.

استنسخ المستودع بجانب تطبيقك واعتمد على الحزمة بمسارها:

flutter pub add "tanrei:{path: ../tanrei/packages/flutter}"

والأمر flutter pub add "tanrei:{git: {url: https://github.com/chnotchy/tanrei, path: packages/flutter}}" يتبع المستودع بدلًا من نسخة محلية مستنسخة.

بعد نشرها

flutter pub add tanrei

الاستخدام

import 'package:flutter/widgets.dart';
import 'package:tanrei/tanrei.dart';

class DeployButton extends StatelessWidget {
  const DeployButton({super.key, required this.isDeploying, required this.onDeploy});

  final bool isDeploying;
  final VoidCallback onDeploy;

  @override
  Widget build(BuildContext context) {
    return TanreiTheme(
      data: TanreiThemeData.platform(context),
      child: TanreiButton(
        variant: TanreiButtonVariant.filled,
        onPressed: isDeploying ? null : onDeploy,
        child: const Text('نشر'),
      ),
    );
  }
}

لا توجد راية باسم disabled. وكما في أزرار Flutter نفسها، تمرير null إلى onPressed يعطّل الزر.

السمة والتباين

يقرأ TanreiThemeData.platform(context) السطوع وراية التباين العالي من MediaQuery. لتثبيتهما، ابدأ من ثابت وانسخ منه:

TanreiTheme(
  data: TanreiThemeData.dark.copyWith(contrast: TanreiContrast.high),
  child: const App(),
)

ضع TanreiTheme فوق المتنقِّل (navigator) حتى يراه كل مسار.

أنماط النص

يحمل TanreiTheme.of(context).system.typescale أنماط النص الستة عشر بحسب المستوى (heading2 لعنوان قسم، و body للنص المتصل، و label لعنصر تحكم) في صورة رموز من النوع TanreiTextStyle؛ ويحوّل theme.textStyle(system.typescale.heading2) (أو token.toTextStyle()) أحدها إلى TextStyle في Flutter. أما theme.textStyle(token, emphasized: true) (ويدويًّا: token.emphasized(system.typescale.emphasis)) فهو النمط نفسه بوزنه مضافًا إليه درجة التوكيد الخاصة بفئته (typescale.emphasis)؛ فالتوكيد وزن وليس دورًا آخر. انظر الطباعة للأدوار ومقابلتها بالعناصر.