بحث باسم الموضوع المطلوب

إنهم يرون صورك

تكشف صورك عن الكثير من المعلومات الخاصة .

في هذه التجربة، تستخدم واجهة برمجة تطبيقات Google Vision لاستخراج القصة وراء صورة واحدة .


انظر إلى ما يرونه


https://theyseeyourphotos.com/

دليل كامل البرنامج التعليمي للتشفير

Cryptography Tutorial


https://geeksforgeeks.org/cryptography-tutorial/

كل جديد في برمجة فلاتر

كيفية إنشاء علامات التبويب في Flutter

https://onlyflutter.com/how-to-create-tabs-in-flutter/

تُعد علامات التبويب طريقة بسيطة وفعّالة لعرض محتوى إضافي على الشاشة دون الحاجة إلى قيام المستخدمين بتبديل الصفحات أو التمرير لأسفل. يحتوي Flutter على بعض الأدوات المدمجة التي تجعل إضافة علامات التبويب أمرًا سهلاً. في هذا المنشور، سنستخدم هذه الأدوات لإنشاء علامات تبويب في Flutter. سنناقش أيضًا حزمة خارجية تمنحك المزيد من الخيارات لبناء علامات التبويب.


نظرة سريعة على ميزات Dart غير المتزامنة

https://yshean.com/a-quick-look-at-async-dart-features/

تشارك المؤلفة يونج شين شرائح محاضرتها في Google DevFest Kuala Lumpur 2024 ، حول ميزات Dart غير المتزامنة.


لماذا لم يتم تكوين تطبيق Flutter لنظام iOS: الأسباب الموضحة

https://flutterdesk.com/why-flutter-application-not-configured-for-ios/

في هذا الدليل الشامل، سنوضح لك الأسباب الأكثر شيوعًا لعدم تشغيل تطبيق Flutter على نظام التشغيل iOS ونقدم تعليمات مفصلة خطوة بخطوة لحلها.


انشر تطبيق Flutter الخاص بك على App Store باستخدام Codemagic CI/CD

https://blog.codemagic.io/publishing-flutter-apps-to-appstore/

في هذه المقالة، ستتعلم كيفية إصدار تطبيق Flutter إلى App Store باستخدام Codemagic CI/CD.

أفضل مجموعات التكنولوجيا التي يجب أن يعرفها كل مطور Top Tech Stacks Every Developer Should Know

أفضل مجموعات التكنولوجيا التي يجب أن يعرفها كل مطور!

Top Tech Stacks Every Developer Should Know!


👥 تطوير الواجهة الأمامية


•React.js


•Vue.js


•Angular


•Svelte


•Next.js


•Nuxt.js


👥 تطوير الواجهة الخلفية


•Node.js


•Django


•Ruby on Rails


•Laravel


•Flask


•Spring Boot


👥 المطور المتكامل


•MERN Stack (MongoDB, Express.js, React, Node.js)


•MEAN Stack (MongoDB, Express.js, Angular, Node.js)


•LAMP Stack (Linux, Apache, MySQL, PHP)


•PERN Stack (PostgreSQL, Express.js, React, Node.js)


•JAMstack (JavaScript, APIs, Markup)


👥 تطوير الأجهزة المحمولة


•React Native


•Flutter


•Swift (iOS)


•Kotlin (Android)


•Ionic


👥 علوم البيانات والتعلم الآلي


•Python with Pandas, NumPy, and Matplotlib


•TensorFlow & Keras


•PyTorch


•R with ggplot2


•Jupyter Notebooks


👥 DevOps


•Docker


•Kubernetes


•Ansible


•Terraform


•Jenkins


•AWS, Azure, or GCP


👥 قاعدة البيانات


•SQL (MySQL, PostgreSQL)


•NoSQL (MongoDB, Cassandra)


•Firebase


•Redis


•Oracle DB


👥 تطوير اللعبة


•Unity


•Unreal Engine


•Godot


•CryEngine


•Blender (for assets)


👥تطوير البلوكشين 


•Solidity


•Ethereum


•Web3.js


•Hyperledger


•Truffle


👥  الأمن السيبراني


•Wireshark


•Metasploit


•Kali Linux


•Burp Suite


•Splunk

ملك الابتكار والتسويق : ستيف جوبز

عمل مع بيل جيتس وبول تودور جونز وألان جرينسبان.


وفي العام الذي نحن فيه الان، حققت شركته 391 مليار دولار.


7 من مبادئ عليك ان تتعلمها من ستيف جوبز يمكنها ان تضيف قصة نجاح لحياتك ...



1- الابتكار الدائم: كان ستيف جوبز دائما يفكر في أفكار جديدة ومختلفة. ابتكر أجهزة رائعة مثل الآيبود والآيفون والآيباد، والتي غيرت طريقة استخدامنا للهواتف والحواسيب.


2- الاهتمام بالشكل: لم يكن جوبز يهتم فقط بوظيفة الجهاز، بل كان مهتما جدا بمظهره أيضا. أراد أن تكون الأجهزة جميلة المظهر وسهلة الاستخدام.


3- تجربة المستخدم: كان جوبز يركز على جعل تجربة استخدام الأجهزة ممتعة وسهلة. أراد أن تكون الأجهزة سهلة الفهم والاستخدام، حتى للأشخاص غير المتمرسين بالتكنولوجيا.


4- الشجاعة في اتخاذ القرارات: لم يكن جوبز يخاف من اتخاذ قرارات صعبة ومختلفة. كان يثق في أفكاره ويجازف لتحقيقها.


5- القيادة القوية: كان جوبز قائدا قويا وكان يعرف كيف يحفز فريقه للعمل بجد. كان يلهمهم لتحقيق أهداف كبيرة.


6- التركيز على الجودة: كان جوبز يصر على أن تكون جميع منتجات أبل عالية الجودة. كان يرفض إطلاق أي منتج إلا إذا كان مثاليا.


7- الرؤية المستقبلية: كان جوبز قادرا على تخيل المستقبل والتخطيط له. كان يعرف ما الذي سيحتاجه الناس في المستقبل وابتكر منتجات تلبي احتياجاتهم.

أداة مجانية عبر الإنترنت لقراءة بيانات التعريف الخاصة بالملفات .

ما يميزها عن العديد من الأدوات المماثلة هو عدد الحقول المراد قراءتها (الحد الأقصى للبيانات، حتى الأقل أهمية) + عدد كبير من التنسيقات المدعومة . Protect your business from data leaks قم بتحليل ملفاتك باستخدام Metashield Clean-up Online https://metashieldclean-up.tu.com/# metashieldclean-up.tu.com/#

مجانا كتاب SQL C o o k b o o k

Query Solutions and Techniques

for All SQL Users


قد تكون على دراية بأساسيات لغة SQL

ولكن هل تستفيد من قوتها التعبيرية؟ 


تطبق هذه الطبعة الثانية نهجًا عمليًا للغاية على لغة الاستعلامات الهيكلية (SQL) حتى تتمكن من إنشاء مخازن كبيرة من البيانات ومعالجتها. استنادًا إلى أمثلة من العالم الحقيقي .


https://downloads.yugabyte.com/marketing-assets/O-Reilly-SQL-Cookbook-2nd-Edition-Final.pdf/

للحصول على اشياء جديد ضمن برمجة فلاتر flutter

 أتمتة نشر تطبيق Flutter Android باستخدام GitHub Actions وfastlane

https://canopas.com/automate-flutter-android-app-deployment-with-git-hub-actions-and-fastlane/

هذه المقالة هي الجزء الثاني من سلسلة مقالات حول أتمتة عملية نشر تطبيقات Flutter. في هذه المقالة، ستتعلم كيفية إعداد خط أنابيب توزيع فعال باستخدام Github action وfastlane لتطبيق Android.


كيفية إنشاء صفائح سفلية مخصصة في Flutter

https://onlyflutter.com/how-to-create-custom-modal-bottom-sheets-in-flutter/

تُعد الصفحات السفلية للنموذج طريقة رائعة لإضافة وظائف إضافية إلى الشاشة دون نقل المستخدم إلى جزء مختلف من التطبيق. في هذا المنشور، ستتعلم النصائح والحيل لمساعدتك في إنشاء الصفحات السفلية للنموذج المخصصة الخاصة بك بسهولة.


إنشاء تطبيق مرافق لـ Flutter على نظام WatchOS

https://medium.com/@Toglefritz/building-a-watchos-companion-app-for-flutter-08f80ea8cb1b/

قد يبدو إنشاء تطبيق مصاحب لـ WatchOS لمشروع Flutter الخاص بك بمثابة تنظيم محادثة بين عالمين مختلفين تمامًا. في هذه المقالة، سنستكشف بنية اتصال قابلة لإعادة الاستخدام تتيح تبادل البيانات ثنائي الاتجاه بين Flutter وWatchOS.


Flutter Riverpod 2.0: إدارة الحالة الحديثة وتوليد التعليمات البرمجية

https://medium.com/itnext/flutter-riverpod-2-0-modern-state-management-and-code-generation-ac82bd6dfb6a/

هذا هو الجزء الثاني من السلسلة. في مقالتنا السابقة، قمنا ببناء تطبيق فيلم باستخدام Riverpod 1.0. اليوم، سنقوم بترقية تنفيذنا لاستخدام ميزات Riverpod 2.0 القوية، مع التركيز على إنشاء التعليمات البرمجية وأنماط إدارة الحالة الحديثة.


إتقان Get_it: دليل شامل لحقن التبعيات في Flutter

https://medium.com/simform-engineering/mastering-get-it-a-comprehensive-guide-to-dependency-injection-in-flutter-db99bfb305bb/

في هذه المقالة، ستنطلق في رحلتك لفهم Get_it وجميع ميزاته.

ما هو MVVM ولماذا يجب عليك استخدامه في Flutter؟

MVVM تعني Model-View-ViewModel. إنه نمط تصميم يساعدك على تنظيم الكود الخاص بك بشكل أفضل، مما يجعله:


أسهل للقراءة


أسهل للاختبار


أسهل للتوسع


دعونا نحللها خطوة بخطوة! 🧵👇


النموذج 🛠️ :

النموذج هو المكان الذي توجد فيه بيانات تطبيقك.


على سبيل المثال: إذا كنت تقوم ببناء تطبيق مهام، فقد يتضمن النموذج قائمة المهام والوظائف لإضافة/إزالة المهام.




عرض 👀 :

العرض هو واجهة المستخدم - ما يراه المستخدمون ويتفاعلون معه.


في Flutter، تشكل عناصر واجهة المستخدم الخاصة بك (مثل Scaffold، وListView، وما إلى ذلك) العرض.


لا ينبغي أن يحتوي على منطق عمل (على سبيل المثال، ما يحدث عند تحديد مهمة). حافظ على البساطة!


رسم توضيحي لهيكل الملف لتطبيق Todo البسيط





عرض النموذج 🌟 :

ViewModel هو الوسيط. فهو يربط النموذج (البيانات) بالعرض (UI) .


نموذج العرض:


يحتفظ بحالة التطبيق (على سبيل المثال، قائمة المهام).


يعرض البيانات على العرض بتنسيق يمكنه استخدامه.


يحتوي على منطق لتحديث النموذج عند تغير شيء ما.


فيما يلي كيفية ظهور MVVM أثناء العمل:


1 ⃣ النموذج: تحتوي فئة المهمة الخاصة بك على بيانات المهمة.

2 ⃣ العرض: تعرض الأداة الخاصة بك (ListView) قائمة بالمهام.

3 ⃣ ViewModel: يتتبع المهام التي تم إنجازها ويقوم بتحديث واجهة المستخدم عند حدوث أي تغيير.


لماذا يجب أن تهتم بـ MVVM؟ 🤷


كود التنظيف: كل جزء لديه دور واضح.


قابلة للاختبار: يمكنك اختبار المنطق في ViewModel دون لمس واجهة المستخدم.


قابلة للتطوير: تجعل إدارة التطبيقات الكبيرة أسهل مع نمو قاعدة التعليمات البرمجية لديك.


هل تريد تعلم MVVM في Flutter خطوة بخطوة؟ ابدأ بالخطوات الصغيرة:


حدد نموذجك (البيانات).


إنشاء عرض بسيط (UI) .


أضف ViewModel للتعامل مع الاتصال بينهما.


برمجة سعيدة! 💻✨

جبت لكم حاجات جديدة في برمجه Flutter

تغيير لون شريط الحالة وشريط التنقل في Flutter

https://onlyflutter.com/change-the-color-of-status-bar-and-navigation-bar-in-flutter/

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


المناقشة: نمط MVVM لتطبيقات Flutter

https://chooyan.hashnode.dev/discussion-mvvm-pattern-for-flutter-apps/

MVVM هو أحد أنماط الهندسة المعمارية الأكثر شيوعًا لتطوير تطبيقات الأجهزة المحمولة. في هذه المقالة، ستتعلم كيفية تطبيق MVVM على تطبيقات Flutter، وكيف "يتناسب" مع تطوير تطبيقات Flutter، أو ربما لا.


تشغيل تطبيق Flutter على أجهزة iOS: دليل خطوة بخطوة

https://flutterdesk.com/how-to-run-flutter-app-on-ios-devices/

قد يبدو تشغيل تطبيق Flutter على نظام التشغيل iOS أمرًا صعبًا في البداية، ولكن باتباع الخطوات الصحيحة، تصبح العملية سهلة ومباشرة. سيرشدك هذا الدليل إلى كل ما تحتاج إلى معرفته لتشغيل تطبيق Flutter على جهاز iPhone أو iPad.


Flutter مقابل React Native — أيهما أفضل لمشروعك في عام 2024؟

https://www.thedroidsonroids.com/blog/flutter-vs-react-native-comparison/

لكل من Flutter وReact Native إيجابيات وسلبيات. أو ربما تفكر في استخدام React Native لتطبيقك — وهذا جيد أيضًا. باتباع هذه المقالة، ستحصل على فكرة عن التقنية الأنسب لتطبيقك.


PullingManager: تحديثات بسيطة في الوقت الفعلي لـ Flutter

https://medium.com/@ayalon.idan/pullingmanager-simple-real-time-updates-for-flutter-4c414f6f7d94/

في هذه المقالة، ستتعرف على حزمة PullingManager وما هو موجود تحت الغطاء الذي يجعل تحديثات البيانات بسيطة وصديقة للبطارية.A

إعلانات Flutter مع Google AdMob

متطلبات

لمتابعة هذا، ستحتاج إلى حساب Google AdMob. AdMob هي منصة إعلانات Google للترويج للتطبيقات المحمولة وتحقيق الدخل منها. إذا لم يكن لديك حساب AdMob بالفعل، فيمكنك التسجيل بسهولة على موقع الويب الخاص بهم https://admob.google.com/home/get-started/ .

بعد التسجيل، حان الوقت لإضافة تطبيقك إلى AdMob. فيما يلي الخطوات اللازمة:

1. انتقل إلى قسم التطبيقات وانقر فوق إضافة التطبيق .
2. اختر المنصة وأخبر AdMob إذا كان تطبيقك مدرجًا في متجر التطبيقات المدعوم .
3. املأ اسم التطبيق الخاص بك، مع الأخذ في الاعتبار أنه يمكن تغيير اسم التطبيق ولكن لا يمكن حذف التطبيق نفسه أبدًا.
بعد إنشاء تطبيقك، يمكنك متابعة إعداد إعلانات Google للجوال.
البدء باستخدام إعلانات https://pub.dev/packages/google_mobile_ads/ Google للجوال
الطريقة الأكثر مباشرة لإضافة إعلانات إلى تطبيق Flutter الخاص بك هي استخدام حزمة إعلانات Google Mobile Ads . أنشأت Google هذه الحزمة لتبسيط عملية إضافة الإعلانات باستخدام https://pub.dev/packages/google_mobile_ads/ AdMob.

1. تثبيت إعلانات Google للجوال
عملية التثبيت بسيطة. ما عليك سوى تنفيذ الأمر التالي داخل مشروعك لإضافة حزمة إعلانات Google Mobile.
cmd,,
flutter pub add google_mobile_ads
,,
بمجرد تنفيذ الأمر، تحقق من ملفك pubspec.yamlبحثًا عن التبعيات المضافة. يجب أن ترى حزمة إعلانات Google Mobile مضمنة في قسم التبعيات، مثل هذا:
cmd,,
dependencies:
  flutter:
    sdk: flutter
  google_mobile_ads: ^5.0.0
,,
2. إضافة معرف التطبيق من Google AdMob
الآن بعد أن قمنا بتثبيت الحزمة، يتعين علينا ربط تطبيق Flutter الخاص بنا بـ AdMob. يمكن القيام بذلك عن طريق إضافة معرف التطبيق من AdMob إلى تطبيقنا. يمكن العثور على معرف التطبيق في قسم تطبيقات AdMob ويمكن نسخه بسهولة بالنقر فوقه. تأكد من عدم مشاركة معرف التطبيق مع أي شخص.
بعد نسخ معرف التطبيق ، يمكننا إضافته داخل تطبيقنا. يختلف التنفيذ وفقًا للمنصة. راجعها أدناه:

بالنسبة لنظام Android، نحتاج إلى إضافة إدخال بيانات تعريفية جديد داخل android/app/src/main/AndroidManifest.xmlالملف. تأكد من وضع معرف التطبيق<application> داخل العلامة وليس داخل <activity>العلامة.
cmd,,
<application>
  ...
  <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID"
             android:value="ca-app-pub-????????????????~??????????"
   />
</application>
,,
لا تنسى استبدال علامات الاستفهام في القيمة بمعرف التطبيق الخاص بك .

بالنسبة لنظام iOS ، نحتاج إلى إضافة إدخال داخل ios/Runner/Info.plistالملف. يمكن القيام بذلك عن طريق إضافة مفتاح جديد داخل <dict>العلامة. استبدل النص الموجود في العلامة بمعرف التطبيق<string> الخاص بك .
cmd,,
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-????????????????~??????????</string>
,,
بعد هذه التغييرات، يجب أن يكون التطبيق متصلاً بـ AdMob.

3. تغيير minSdkVersion إلى 21
تتطلب حزمة إعلانات Google Mobiles منا تغيير minSdkVersion إلى أو أعلى. يمكن إجراء 21التغيير داخل ملف مشروعنا.minSdkVersionandroid\app\build.gradle

cmd,,

defaultConfig {
    applicationId "com.example.ads_with_google_admob"
    minSdkVersion 21
    targetSdkVersion flutter.targetSdkVersion
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

,,

تنفيذ AdBanner من Google في Flutter
بعد تثبيت الحزمة وإضافة معرف التطبيق الخاص بنا إلى تطبيق Flutter، حان الوقت الآن لتنفيذ إعلاننا الأول. في هذا المنشور، سنقوم بإنشاء إعلان بانر. عادةً ما يتم عرض إعلانات البانر في أسفل التطبيق.

يعتبر الكود الأولي للمشروع بسيطًا جدًا، حيث يتم كتابة كل شيء داخل main.dartالملف.
cmd,,

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: [
            const Expanded(child: SizedBox.shrink()),
          ],
        ),
      ),
    );
  }
}

,,

نظرًا لأن إعلان البانر سيُعرض في الأسفل، فلدينا أداة Columnداخل Scaffold. داخل Columnالأداة، لدينا Expandedأداة يمكنك استبدالها بسهولة بالأداة (الأدوات) المرغوبة حسب اختيارك. في الوقت الحالي، تحتوي على SizedBox.shrink()أداة كعنصر نائب.

إضافة BannerAd
لإضافة أي إعلان باستخدام حزمة إعلانات Google Mobile Ads، يتعين علينا التأكد من تهيئة نموذج إعلانات MobileAds. يجب عليك دائمًا القيام بذلك عند بدء تشغيل التطبيق.

في الكود أدناه نبدأ باستيراد حزمة إعلانات Google Mobile. داخل الدالة mainنستدعي WidgetsFlutterBinding.ensureInitialized();متبوعًا بـ MobileAds.instance.initialize();. يجب استدعاؤها بهذا الترتيب لأنه قبل MobileAdsتهيئة المثيل، يتعين علينا التأكد من WidgetsFlutterBindingتهيئة .

cmd,,

import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize();

  runApp(const MyApp());
}

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  BannerAd? _bannerAd;

  @override
  void initState() {
    super.initState();
    _createBannerAd();
  }

  Future<void> _createBannerAd() async {
    _bannerAd = BannerAd(
      adUnitId: 'ca-app-pub-3940256099942544/6300978111',
      size: AdSize.banner,
      request: const AdRequest(),
      listener: BannerAdListener(
        onAdLoaded: (Ad ad) {},
        onAdFailedToLoad: (Ad advertisement, LoadAdError error) =>
            advertisement.dispose(),
      ),
    )..load();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: [
            const Expanded(child: SizedBox.shrink()),
            if (_bannerAd != null)
              Center(
                child: SizedBox(
                  width: _bannerAd?.size.width.toDouble(),
                  height: _bannerAd?.size.height.toDouble(),
                  child: AdWidget(ad: _bannerAd!),
                ),
              ),
          ],
        ),
      ),
    );
  }
}

,,

بعد التهيئة، نكون مستعدين لاستخدام BannerAd. يمكن عرض كل إعلان من حزمة إعلانات Google Mobile باستخدام AdWidget. ومع ذلك، نحتاج إلى ضمان تحميل الإعلان قبل إضافته إلى AdWidget.

لهذا السبب، نستخدم initStateالدالة التي تستدعي _createBannerAdالدالة. داخل _createBannerAdالدالة، نقوم بتعيين مثيل جديد للمتغير BannerAdالخاص بنا _bannerAd.

فئة BannerAd
BannerAdيتم تعيين المعرف الذي adUnitIdفي هذا المثال على معرف وحدة الإعلان الاختباري المخصصة لنظام Android. ولكن يمكن أيضًا استبدال هذا المعرف بمعرف وحدة الإعلان الاختباري المخصصة لنظام iOS.

يحتوي كل إعلان من إعلانات Google Mobile Ads SDK على وحدة اختبار مخصصة. يمكنك الاطلاع على معرفات وحدة اختبار الإعلانات المخصصة لنظامي التشغيل Android وiOS أدناه:

android 
ca-app-pub-3940256099942544/6300978111
iOS
ca-app-pub-3940256099942544/2934735716

علاوة على ذلك، يتم تحديد حجم الإعلان باستخدام AdSize.banner. لدينا الطلب والمستمع الذي يمكن استخدامه لتنفيذ الإجراءات كلما تم تحميل الإعلان بنجاح أو لا.

وأخيرًا، نستدعي load()الوظيفة باستخدام تدوين الشلال (..)، والذي يسمح لنا باستدعاء الوظيفة على الكائن دون الحاجة إلى إنشاء متغير منفصل له.

الآن وبعد BannerAdتحميل الملف بنجاح، لا يزال يتعين علينا إضافته إلى ملفنا AdWidget. يتم ذلك عبر الإنترنت 52. يمكنك أن ترى أننا نستخدم أيضًا عبارة if لإظهار فقط AdWidgetعندما _bannerAdلا يكون المتغير null.

سيؤدي تشغيل الكود أعلاه إلى ما يلي:
كما ترى، قمنا بتحميل إعلان البانر الأول بنجاح. ومع ذلك، لم نكن راضين تمامًا بعد، لأن إعلان البانر لا يستخدم العرض الكامل لشاشتنا.
طلب حجم AdBanner
للتأكد من أن إعلان البانر الخاص بنا يشغل العرض الكامل، يمكننا طلب الحجم باستخدام getCurrentOrientationAnchoredAdaptiveBannerAdSizeالدالة. تعيد هذه الدالة حجم الإعلان بالعرض المحدد والارتفاع المحسن من قِبل Google لإنشاء ملف BannerAd.

cmd,,

import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize();

  runApp(const MyApp());
}

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  BannerAd? _bannerAd;

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    _createBannerAd();
  }

  Future<void> _createBannerAd() async {
    await AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(
      MediaQuery.sizeOf(context).width.truncate(),
    ).then((AnchoredAdaptiveBannerAdSize? size) => _bannerAd = BannerAd(
          adUnitId: 'ca-app-pub-3940256099942544/6300978111',
          size: size ?? AdSize.banner,
          request: const AdRequest(),
          listener: BannerAdListener(
            onAdLoaded: (Ad ad) {},
            onAdFailedToLoad: (Ad advertisement, LoadAdError error) =>
                advertisement.dispose(),
          ),
        )..load());
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: [
            const Expanded(child: SizedBox.shrink()),
            if (_bannerAd != null)
              Center(
                child: SizedBox(
                  width: _bannerAd?.size.width.toDouble(),
                  height: _bannerAd?.size.height.toDouble(),
                  child: AdWidget(ad: _bannerAd!),
                ),
              ),
          ],
        ),
      ),
    );
  }
}

,,

يتعين علينا استدعاء getCurrentOrientationAnchoredAdaptiveBannerAdSizeالدالة قبل إنشاء ملف . وتحميل ملف BannerAd. لذلك ننتظر الدالة ونستخدم thenمعاودة الاتصال لتعيين ملف . BannerAdللمتغير _bannerAd. لاحظ أن الحجم الذي يتم إرجاعه من الدالة قابل للعدم. ولهذا السبب، ما زلنا نريد أن يكون AdSize.bannerهذا هو البديل.

يتعين علينا أيضًا تغيير initStateالوظيفة بالوظيفة didChangeDependenciesلتجنب الوقوع في مشكلات البناء.

مع تطبيق هذه التغييرات، سنحصل على إعلان البانر التالي:
يبدو هذا أفضل بكثير ويمكننا الآن الانتقال إلى الخطوة الأخيرة، وهي عرض إعلانات البانر الحقيقية.

إنشاء وحدة إعلانية جديدة لعرض الإعلانات باستخدام Google AdMob

حتى الآن، كنا نستخدم وحدات الإعلانات الاختبارية المخصصة لعرض الإعلانات باستخدام Google AdMob. ومع ذلك، نريد استخدام معرف وحدة الإعلان الخاصة بنا . لذلك، يتعين علينا إنشاء وحدة إعلانية جديدة في AdMob.

1. إنشاء وحدة إعلانية بانر في AdMob
1. في قسم التطبيقات في AdMob، يتعين علينا تحديد التطبيق الخاص بنا، ثم النقر على زر إضافة وحدة إعلانية أو الانتقال إلى قسم وحدات الإعلان .
2. بمجرد النقر على الزر، يتعين علينا تحديد تنسيق الإعلان، والذي سيكون الشعار في حالتنا.
3. بعد تحديد التنسيق، يتعين علينا تسمية إعلان البانر الخاص بنا، وتأكد من اختيار اسم وصفي لتسهيل العثور عليه. يمكنك إلقاء نظرة على الإعدادات المتقدمة، ومع ذلك، يمكن دائمًا تغييرها لاحقًا. انقر فوق إنشاء وحدة إعلانية لإنهاء عملية الإنشاء.
4. الآن بعد إنشاء وحدة الإعلان الخاصة بنا، يمكنك نسخ المعرف الثاني الذي تم تقديمه. المعرف الأول المقدم هو معرف التطبيق ، والذي أضفناه بالفعل إلى تطبيقنا.
ضع في اعتبارك أن الأمر قد يستغرق بعض الوقت قبل أن تصبح وحدة الإعلان الخاصة بك جاهزة للاستخدام. يذكر AdMob أن الأمر قد يستغرق ما يصل إلى ساعة.


2. الحصول على معرف اختبار الإعلان من AdMob
قبل أن نضيف معرف وحدة الإعلان إلى تطبيقنا، يتعين علينا الحصول على معرف الإعلان الخاص بنا . كل جهاز لديه معرف إعلان . في حالتنا، يتم استخدام هذا المعرف لمساعدة AdMob في التعرف على الجهاز كجهاز اختبار. سيساعدك هذا على تجنب الوقوع في مشكلات مع AdMob. بالطبع، لا يريدون منك تشغيل إعلانات فعلية عند التطوير. أوصي دائمًا بالحصول على معرف الإعلان الخاص بهاتفك الفعلي وجميع معرفات الإعلانات الخاصة بأجهزة الاختبار الخاصة بك.

يوضح ملف GIF أدناه كيفية الحصول على معرف الإعلان على محاكي Android . هذا لأغراض العرض التوضيحي لأن كل محاكي يتم التعرف عليه تلقائيًا كجهاز اختبار.
الخطوات المتبعة في GIF هي:

  1. انتقل إلى الإعدادات.
  2. ابحث عن "الإعلانات".
  3. انقر على الإعلانات .
  4. انقر فوق الإعلانات مرة أخرى.
  5. يتم عرض معرف الإعلان في منتصف الشاشة.
وبطبيعة الحال، سيكون هذا مختلفًا بالنسبة للمنصات والأجهزة الأخرى.

3. استخدام وحدة إعلانات البانر في تطبيقنا
في mainوظيفتنا نريد تحديث تكوين الطلب باستخدام updateRequestConfigurationالوظيفة. تأخذ هذه الوظيفة RequestConfigurationوداخل هذا التكوين، يمكننا إضافة مجموعة من معرفات الإعلان .

cmd,,

import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize();

  await MobileAds.instance.updateRequestConfiguration(

    RequestConfiguration(

      testDeviceIds: [

        '2793ca2a-5956-45a2-96c0-16fafddc1a15',

      ],

    ),

  );


  runApp(const MyApp());
}

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  BannerAd? _bannerAd;

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    _createBannerAd();
  }

  Future<void> _createBannerAd() async {
    await AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(
      MediaQuery.sizeOf(context).width.truncate(),
    ).then((AnchoredAdaptiveBannerAdSize? size) => _bannerAd = BannerAd(
      adUnitId: 'ca-app-pub-????????????????/??????????',

      size: size ?? AdSize.banner,
      request: const AdRequest(),
      listener: BannerAdListener(
        onAdLoaded: (Ad ad) {},
        onAdFailedToLoad: (Ad advertisement, LoadAdError error) =>
            advertisement.dispose(),
      ),
    )..load());
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Column(
          children: [
            const Expanded(child: SizedBox.shrink()),
            if (_bannerAd != null)
              Center(
                child: SizedBox(
                  width: _bannerAd?.size.width.toDouble(),
                  height: _bannerAd?.size.height.toDouble(),
                  child: AdWidget(ad: _bannerAd!),
                ),
              ),
          ],
        ),
      ),
    );
  }
}

,,

لإضافة معرف وحدة الإعلان الجديدة، يتعين علينا استبدال معرف وحدة الإعلان المخصصة بالمعرف الذي أنشأناه. لقد قمت بإخفاء معرفي لأن هذه المعرفات لا ينبغي مشاركتها. بمجرد إجراء التغيير، يجب أن ترى إعلانًا مثل الإعلان الموضح أدناه:
تأكد من ذكر "Test Ad" على أجهزة الاختبار الخاصة بك. وإلا، فلن تضف معرف الإعلان الصحيح إلى testDeviceIdsالمصفوفة. أما على جميع الأجهزة الأخرى، فسوف تعرض إعلانات فعلية.

خاتمة
في هذه المقالة، قمنا بنجاح بتنفيذ إعلانات باستخدام Google AdMob من خلال عرض إعلان بانر باستخدام حزمة إعلانات Google Mobile. لقد تعلمت كيفية ربط Google AdMob بتطبيق Flutter الخاص بك. وفي الوقت نفسه، قمت أيضًا بإنشاء وحدة إعلانية أولى واستخدمتها لعرض إعلان فعلي. تذكر أنه يمكنك دائمًا استخدام وحدات الإعلانات المخصصة من Google للاختبار.

ملاحظة لبعض مستخدمي تطبيق اعلام تقني: إذا لم تشاهد الصور، انتقل إلى المتصفح لمشاهدة كل شيء.

أهم أوامر ال Git

أوامر أساسية:

git init:

يستخدم لإنشاء مستودع Git جديد في الدليل الحالي.

git clone: 

يستخدم لاستنساخ مستودع موجود إلى دليل محلي.

git add: 

يضيف التغييرات في الملفات إلى منطقة التجميع (staging area) استعدادًا للإلتزام.

git commit: 

يحفظ التغييرات الموجودة في منطقة التجميع إلى سجل الإصدارات.

git status: 

يعرض حالة المستودع الحالي، مثل الملفات المعدلة والمضافة والجاهزة للإلتزام.

git diff: 

يعرض الاختلافات بين الإصدارات المختلفة من الملفات.

أوامر إدارة الفروع:

git branch: 

يستخدم لعرض قائمة الفروع الموجودة وإنشاء فروع جديدة.

git checkout: 

يتيح لك الانتقال بين الفروع المختلفة.

git merge: 

يدمج تغييرات فرع ما في فرع آخر.

أوامر التفاعل مع المستودعات البعيدة:

git remote: 

يستخدم لإدارة المستودعات البعيدة المرتبطة بالمستودع المحلي.

git push: 

يدفع التغييرات المحلية إلى المستودع البعيد.

git pull: 

يجلب التغييرات من المستودع البعيد ويدمجها في المستودع المحلي.

git log: 

يعرض سجل الإصدارات.

git reset: 

يستخدم لإلغاء التغييرات الأخيرة.

git revert: 

يستخدم لإلغاء تأثير إلتزام معين.

git stash:

كم عدد الأشخاص اللي ما يدروا انك تقدر تستخدم ChatGPT على وتساب حقك‼️🤯

‏الموضوع جدًا سهل🔥

‏بحط لكم الخطوات

‏اسم الأداة:

‏Heypat AI.

‏منها تقدر تستخدم ChatGPT مباشرة على الواتساب او التيليجرام

‏سهل وسريع وآمن‼️

‏هذا رابطها:

https://heypat.ai/

روح للواتساب وقول: "Hey Pat"

وارجع اعمل نعم YES بعد الرد 

‏أهم المزايا:

‏1. معلومات كافية تساعدك بكل وقت

‏2. بيانات محدثة

‏3. آخر الأخبار وآخر المستجدات والترند

‏ايش المميز أكثر في PAT😍؟

‏- يجيب لك المعلومات في ثواني

‏- إنشاء محتوى تفصيلي

‏- دعم تعليمي مستمر

‏- معلومات محدثة للحظة

‏- آخر التحديثات لصحتك

‏-  الترجمة بكفاءة

اشياء جديد في برمجه Dart & Flutter

كيفية إضافة قاعدة بيانات محلية باستخدام Hive في Flutter

https://onlyflutter.com/how-to-add-a-local-database-using-hive-in-flutter/

إذا كنت تريد إضافة قاعدة بيانات محلية إلى تطبيق Flutter، فإن Hive هو خيار شائع. فهو مكتوب بلغة Dart الخالصة، ولا يتطلب SQL، وهو سريع للغاية. في هذا المنشور، ستتعلم كيفية استخدام Hive في Flutter من خلال بناء تطبيق جرد.


R.I.P. build_runner: نظرة متعمقة على وحدات الماكرو في Dart & Flutter

https://quickbirdstudios.com/blog/macros-dart-flutter/

على عكس build_runner، الذي يتطلب تبعيات خارجية وقد يبدو مرهقًا، تعمل وحدات الماكرو في Dart على تمكين إنشاء التعليمات البرمجية مباشرةً في وقت التجميع، مما يلغي الحاجة إلى خطوة بناء منفصلة. في هذه المقالة، ستستكشف وحدات الماكرو وكيفية تمكينها.


الانتقال إلى Serverless مع Dart: AWS Lambda لمطوري Flutter

https://dinkomarinac.dev/going-serverless-with-dart-aws-lambda-for-flutter-devs/

هذه المقالة هي الجزء الأول من سلسلة "الانتقال إلى نظام بدون خوادم مع Dart". والهدف من هذه السلسلة هو أن نوضح لك كيفية كتابة ونشر منطق بدون خوادم (المعروف أيضًا باسم وظائف السحابة) إلى موفري السحابة الأكثر شهرة: AWS وGCP.


ما هو Dart في Flutter؟ : دليل كامل

https://flutterdesk.com/what-is-dart-in-flutter/

سيشرح هذا التقديم أساسيات Dart. كما سيوضح كيفية عمل Dart مع تطوير Flutter. دعنا نتعمق في كيفية دعم Dart لإطار عمل Flutter!


إنشاء حزمة Flutter جديدة ونشرها على pub.dev في ساعتين

https://kazlauskas.dev/blog/publishing-new-flutter-package/

دليل خطوة بخطوة حول كيفية إنشاء حزمة Flutter جديدة ونشرها على pub.dev، بسرعة وسهولة.


إطلاق العنان لأداء Flutter المحسّن؛ حالة المفاتيح

https://dev.to/dirisujesse/unlocking-improved-flutter-performance-a-case-for-keys-101j/

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


ما هي البرمجة وماذا يعني أن يكون الشخص مبرمجاً؟

البرمجة هي فن ومهارة إعطاء الأوامر للآلات، مثل الحواسيب، لتنفيذ مهام محددة. المبرمج هو الشخص الذي يكتب هذه الأوامر بلغة يفهمها الحاسوب. تخيل أنك تكتب وصفة طعام، ولكن بدلاً من وصف المكونات والخطوات لطاهٍ بشري، تكتبها بلغة يفهمها روبوت طاهٍ!

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

حتى عندما تستخدم تطبيق الهاتف الذكي، فإن مبرمجين قد كتبوا الأوامر التي تجعل التطبيق يعمل.

لكن البرمجة ليست مجرد كتابة للأوامر, إنها ممتعة بما يأتيك من مهام لحل المشكلات. المبرمجون يقضون الكثير من الوقت في التفكير المنطقي وحل الألغاز وربط الامور العديدة مع بضعها البعض لكي ينتج عنه نتيجة واحدة.

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

باختصار، البرمجة هي فن تحويل الأفكار إلى واقع رقمي. المبرمجون هم السحرة الذين يجعلون الآلات تتحرك وتفكر، ويجعلون عالمنا التكنولوجي أكثر إثارة كل يوم.

جوجل كلاود تفرض المصادقة متعددة العوامل بحلول عام 2025 لجميع المستخدمين .

أعلن قسم السحابة في جوجل أنه سيفرض المصادقة الإلزامية متعددة العوامل (MFA) لجميع المستخدمين بحلول نهاية عام 2025 كجزء من جهودها لتحسين أمان الحسابات .


وقال مايانك أوبادياي، نائب رئيس الهندسة والمهندس المتميز في جوجل كلاود، في بيان: "سننفذ وزارة الخارجية الإلزامية لجوجل كلاود في نهج تدريجي سيتم طرحه على جميع المستخدمين في جميع أنحاء العالم خلال عام 2025 .


لضمان انتقال سلس، ستقدم Google Cloud إشعارا مسبقا للمؤسسات والمستخدمين على طول الطريق للمساعدة في التخطيط لعمليات نشر MFA .


من المقرر أن تتم عملية التنفيذ على ثلاث مراحل، بدءا من هذا الشهر وحتى نهاية عام 2025 


✔️ المرحلة الأولى (بدءا من نوفمبر 2024)، عندما سيتم تزويد المسؤولين بالمعلومات للتحضير للترقية الأمنية

✔️ المرحلة 2 (أوائل عام 2025)، عندما تبدأ Google في طلب MFA لجميع مستخدمي Google Cloud الجدد والحاليين الذين يقومون بتسجيل الدخول باستخدام كلمة مرور

✔️ المرحلة 3 (نهاية عام 2025)، عندما تقوم Google بتوسيع نطاق حماية MFA للمستخدمين .

 


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


يتبع الإعلان أيضا تحركات مماثلة من منافسيها السحابيين أمازون ومايكروسوفت، اللتين بدأتا أيضا في سن وزارة الخارجية الإلزامية لخدمات أمازون ويب (AWS) وأزور، على التوالي، في الأشهر الأخيرة .


https://cloud.google.com/blog/products/identity-security/mandatory-mfa-is-coming-to-google-cloud-heres-what-you-need-to-know/


إلى مصممي واجهة المستخدم وتجربة المستخدم، إليكم دليلاً سريعًا للشبكة المحمولة لشاشات iOS وAndroid.

 

او رابط الصوره من هنا :  https://sajaf-fon.blogspot.com/2024/11/ios-android-ui-ux.html/

لمعرفه شيء جديد وحصري في برمجه فلاتر

لم يتم العثور على الملف 'Flutter/Flutter.h'

https://onlyflutter.com/flutter-flutter-h-file-not-found/

عند تطوير تطبيق Flutter الخاص بك لنظام iOS، قد تواجه خطأً يشير إلى عدم العثور على ملف "Flutter/Flutter.h" . في هذا المنشور، سنستعرض الحل لمساعدتك في حل هذا الخطأ وتشغيل تطبيقك بسلاسة على نظام iOS.


لماذا تعلم SwiftUI كمطور Flutter؟

https://verygood.ventures/blog/why-learn-swiftui-as-a-flutter-developer/

هناك العديد من الحالات الهامشية التي لا يغطيها Flutter. على مدار 10 سنوات، واصلت Apple دفع iOS وiPadOS وmacOS إلى الأمام من خلال إزالة الوظائف من التطبيق الأساسي وإضافتها في مكان آخر حتى تتمكن من التفاعل معها دون تشغيل التطبيق على الإطلاق. لذلك، في هذه المقالة، ناقش فريق VGV مقارنة SwiftUI وFlutter وناقش سبب رغبتك في تعلم SwiftUI كمطور Flutter وكيف يمكن أن تبدو التجربة.


تأمين البيانات باستخدام تشفير AES وفك التشفير في Flutter

https://medium.com/@eebrahimjoy/secure-data-with-aes-encryption-decryption-in-flutter-e401a14cdab7/

في هذه المقالة، سنتناول نهجًا خطوة بخطوة لتنفيذ تشفير وفك تشفير AES (معيار التشفير المتقدم) في تطبيق Flutter باستخدام Dart.


كيفية استخدام الرسوم المتحركة Flare في Flutter لإنشاء واجهات مستخدم جذابة وجميلة

https://medium.com/stackademic/how-to-use-flare-animations-in-flutter-to-create-engaging-and-beautiful-uis-c064891b5645/

في هذه المقالة، سنتعمق في كيفية استخدام رسوم Flare المتحركة في Flutter. سواء كنت مبتدئًا أو مطورًا متقدمًا، سيوفر لك هذا الدليل خطوات عملية ومقاطع تعليمات برمجية ونصائح من خبراء لتحسين تجربة المستخدم في تطبيقك.

لعمل شخصية المستخدم (Persona) و خريطة تجربة المستخدم (User Journey Map) لخدمة توصيل الطعام، يمكنك اتباع الخطوات التالية:

1. إنشاء شخصية المستخدم (Persona):

   - الاسم: اختر اسماً مناسباً للشخصية، مثلاً "علي" أو "سارة".

   - العمر: حدد الفئة العمرية، مثلًا: 25 سنة.

   - الوظيفة: اختر وظيفة توضح مستوى الدخل وأنماط الحياة، مثل موظف بدوام كامل، أو طالب.

   - الهوايات والاهتمامات: أضف بعض الاهتمامات التي تدعم استخدامه لتطبيق توصيل الطعام.

   - الأهداف: ما الذي يأمل المستخدم في تحقيقه باستخدام التطبيق؟ مثال: توصيل سريع، توفير طعام صحي.

   - التحديات: أي صعوبات يمكن أن تواجهه؟ مثل تكلفة التوصيل العالية، أو خيارات محدودة للطعام الصحي.


2. عمل خريطة تجربة المستخدم (User Journey Map):

   - المرحلة الأولى - الوعي: كيف يتعرف المستخدم على خدمة التوصيل؟ مثلًا عبر الإعلانات أو توصيات الأصدقاء.

   - المرحلة الثانية - البحث عن خيارات: كيف يبحث عن الطعام؟ مثلاً استخدام فلتر للمطاعم حسب المسافة أو نوع الطعام.

   -  المرحلة الثالثة - الطلب: هنا سيبدأ المستخدم بإضافة الطعام إلى السلة والتأكيد.

   - المرحلة الرابعة - التوصيل: تعقب الطلب وتحديد وقت الوصول المتوقع.

   - المرحلة الخامسة - التقييم: قد يقوم بتقييم الخدمة بعد وصول الطعام.

مجاناً 8 دورات تدريبية حول أمن الحوسبة السحابية .

تعرف على كيفية بدء مهنة في مجال الحوسبة السحابية .

تتضمن هذه الدورات التدريبية السحابية على وجه الخصوص بعض مسارات التعلم الرائعة لأولئك الذين يبدأون من الصفر .


💥 المقدمة

1. الوظائف في مجال الحوسبة السحابية

Careers in Cloud Computing


2. الأمن السيبراني بإستخدام الحوسبة السحابية

Cyber Security with Cloud Computing


💥 Microsoft Azure

3. البدء في أستخدام Microsoft Azure

Getting Started with Microsoft Azure


4. التدريب الأساسي على إدارة Azure

Azure Administration Essential Training


5. إعداد شهادة أساسيات Azure (AZ-900)

Azure Fundamentals (AZ-900) Cert Prep


💥 AWS آمازون السحابية

6. AWS لغير المهندسين

AWS for Non-Engineers


7. ممارس السحابة في AWS

AWS Cloud Practitioner


8. الترحيل إلى AWS

Migrating to AWS


https://linktr.ee/mikemillercyber

لتتعلم شي جديد في برمجه فلاتر

أتمتة نشر تطبيق Flutter iOS باستخدام GitHub Actions وCodemagic CLI

https://canopas.com/automate-flutter-ios-app-deployment-with-github-actions-and-codemagic-cli-4d063ea6ef08

في هذه المقالة، ستتعلم كيفية استخدام أدوات Codemagic CLI مع GitHub Actions لنشر تطبيق Flutter على iOS.


الحفاظ على مزامنة الأدوات مع بياناتك

https://blog.burkharts.net/keeping-widgets-in-sync-with-your-data/

هذه المقالة هي الجزء الثاني من استخدام كائنات الوكيل. في هذه المقالة، ستتعلم كيفية تحسين معالجة الأخطاء، وكيفية عرض كائن وكيل في أماكن متعددة في وقت واحد، وكيفية استخدام الأوامر لكتابة كود أنيق.


دعونا نتحدث عن تسربات الذاكرة في Dart و Flutter

https://dcm.dev/blog/2024/10/21/lets-talk-about-memory-leaks-in-dart-and-flutter/

في هذه المقالة، سوف نستكشف تسريبات الذاكرة في Dart و Flutter، وكيف تحدث، وأهميتها في ممارسات الترميز، والحلول لتصحيح تسريبات الذاكرة وتحديدها مثل DevTools و Leak Tracker والتحول إلى اليسار بالاعتماد على أدوات التحليل الثابتة مثل DCM وكيف يمكنها منع مثل هذه التسريبات من التسلل إلى قاعدة التعليمات البرمجية الخاصة بك.


كيفية إدارة رؤوس HTTP ومعلمات الاستعلام في Flutter

https://medium.com/@blup-tool/how-to-manage-http-headers-and-query-parameters-in-flutter-2a2381b3285f/

تعرف على كيفية إضافة رؤوس مخصصة ومعلمات استعلام إلى طلبات HTTP في Flutter. أتقن تفاصيل تكامل واجهة برمجة التطبيقات والاتصال.

أدوات للكشف عن بياناتك الشخصية على الويب المظلم DarkWeb

فيما يلي تجميع لأفضل 4 أدوات مجانية قم بإستخدامها بإنتظام (كل 4 أشهر) للتحقق مما يعرفه المتسللون عنك بالفعل .


1. Pentester


🔗 رابط : https://pentester.com/

اكتشف بصمتك الرقمية بنقرتين بسيطتين .

أداة رائعة حقًا لمعرفة ما إذا كانت بياناتك قد تعرضت للتسريب حتى تتمكن من تغيير كلمات المرور الخاصة بك بسرعة وعدم ترك أي فرصة للمتسللين .


2. HackCheck


🔗 الرابط : https://hackcheck.io


باختصار HackCheck هو محرك بحث عن تسريبات البيانات .

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


3. Have I been PWNED?


🔗 الرابط : http://haveibeenpwned.com/


واحدة من أقدم الأدوات للتحقق مما إذا كانت بياناتك الشخصية قد تعرضت للاختراق والتسريب إلى الويب المظلم .


يحتوي هذا الموقع أيضًا على قسم ضخم يحتوي على أكبر وأحدث خروقات البيانات.


وُلدت Have I Been Pwned في أعقاب إحدى أكبر عمليات الاختراق لحسابات العملاء في التاريخ - اختراق Adobe .

في عام 2013، تم اختراق حوالي 153 مليون حساب Adobe، ويحتوي كل منها على:

•معرف داخلي

•اسم المستخدم

•بريد إلكتروني

•كلمة المرور المشفرة وما إلى ذلك .


4. NameScan.io

🔗 الرابط : http://namescan.io


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


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


💡دورات وشهادات مجانية اختبار الاختراق والقرصنة الأخلاقية مع اعتماد CPD

- مهندس اختبار الاختراق

Penetration Testing Engineer


https://alison.com/course/penetration-testing-engineer/


- تقييم نقاط الضعف واختبار الاختراق (VAPT)

Vulnerability Assessment and Penetration Testing (VAPT)


https://alison.com/course/vulnerability-assessment-and-penetration-testing-vapt/


- ChatGPT (Open AI) الأمن والخصوصية والقرصنة الأخلاقية

ChatGPT (Open AI) Security, Privacy & Ethical Hacking


https://alison.com/course/chatgpt-open-ai-security-privacy-and-ethical-hacking/


- القرصنة الأخلاقية

Professional Ethical Hacking


https://alison.com/course/professional-ethical-hacking/


- مستشار اختبار الاختراق

Penetration Testing Consultant


https://alison.com/course/penetration-testing-consultant/

كيفية إضافة الظلال إلى عناصر واجهة المستخدم في Flutter

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

جدول المحتويات

إضافة الظلال إلى الحاوية

  • استخدم فئة BoxDecoration لإضافة الظلال إلى عناصر واجهة المستخدم في Flutter
  • استكشاف فئة BoxShadow

1. BlurRadius

2. أسلوب التمويه

3. اللون

4. الإزاحة

5. انتشار نصف القطر

  • استخدام عناصر واجهة المستخدم المتعددة BoxShadow لإضافة الظلال في Flutter
  • إضافة الظلال إلى الأدوات الأخرى
  • تغليف عناصر واجهة المستخدم باستخدام حاوية لإضافة الظلال في Flutter
  • خاتمة

إضافة الظلال إلى الحاوية
سنبدأ بإضافة ظل إلى إحدى الأدوات الأكثر استخدامًا في Flutter: Containerالأداة. أولاً، قمنا بإعداد تطبيق بسيط داخل ملفنا main.dartيعرض Containerأداة مركزية بلون خلفية أزرق.

CMD...

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(
      home: Scaffold(
        body: Center(
          child: Container(
            width: 200,
            height: 200,
            color: Colors.blue,
            child: const SizedBox.shrink(),
          ),
        ),
      ),
    );
  }
}
CMD.....

عندما نقوم بتشغيل main.dartالملف، سوف ترى لونًا أزرقًا Containerمعروضًا في وسط الشاشة.

الآن دعونا ننتقل إلى القسم التالي حيث سنقوم بتطبيق الظلال على Containerالأداة.

استخدم فئة BoxDecoration لإضافة الظلال إلى عناصر واجهة المستخدم في Flutter
Containerيمكن إضافة الظلال إلى عنصر واجهة مستخدم في Flutter باستخدام BoxDecorationالفئة. تتيح لك هذه الفئة تخصيص Containerمظهر عنصر واجهة المستخدم، بما في ذلك الظلال.



CMD...

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(
      home: Scaffold(
        body: Center(
          child: Container(
            width: 200,
            height: 200,
            decoration: const BoxDecoration(
              color: Colors.white,
              boxShadow: [
                BoxShadow(
                  blurRadius: 25,
                  blurStyle: BlurStyle.normal,
                  color: Colors.black,
                  offset: Offset.zero,
                  spreadRadius: 2,
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}

CMD.....

في الكود أعلاه، استبدلنا colorخاصية the Containerبالخاصية decoration. داخل decorationالخاصية، نستخدم BoxDecorationمثيلًا. BoxDecorationيسمح لنا المثيل بتعيين لون الخلفية وإضافة تأثير ظل إلى Container.

داخل BoxDecorationالمثيل، قمنا بتعيين colorsالخاصية إلى Colors.white، والخاصية boxShadowإلى قائمة تحتوي على BoxShadowمثيل واحد لإضافة ظل. BoxShadowيأخذ المثيل الخصائص التالية:

  • blurRadius:يحدد عدم وضوح الظل. تؤدي القيمة الأعلى إلى إنشاء ظل أكثر نعومة.
  • blurStyle:يحدد نمط التمويه المطبق على الظل. في هذه الحالة، يتم ضبطه على تمويه عادي.
  • color:تعيين لون الظل إلى اللون المحدد، والذي في هذا المثال تم تعيينه إلى اللون الأسود.
  • offset:يحدد موضع الظل. هنا، Offset.zeroيعني أن الظل يقع مباشرة أسفله Containerدون أي إزاحة في أي اتجاه.
  • spreadRadius:يتحكم في مدى انتشار الظل من حواف Container.
عندما نقوم بتشغيل التطبيق، سوف ترى لونًا أبيض Containerمع ظل داكن حوله.
في القسم القادم من هذه التدوينة، سنلقي نظرة عن كثب على كل خاصية من خصائص BoxShadowالفئة.

استكشاف فئة BoxShadow
لقد تعلمنا حتى الآن أن هذه BoxShadowالفئة تسمح لنا بإنشاء تأثيرات ظلية Containerللأدوات. BoxShadowوتوفر هذه الفئة الكثير من التخصيصات. دعنا نستعرض خيارات التخصيص لنرى ما يمكننا تحقيقه باستخدامها.

1. BlurRadius
تتحكم الخاصية blurRadiusفي مدى ضبابية الظل. تؤدي القيمة الأكبر، مثل 100، إلى إنشاء ظل أكثر نعومة ووضوحًا. وعلى العكس من ذلك، يؤدي تعيين blurRadiusإلى إلى إلى 0إنشاء ظل ذو حواف حادة.

CMD...

BoxShadow(
  blurRadius: 100,
  blurStyle: BlurStyle.normal,
  color: Colors.black,
  offset: Offset.zero,
  spreadRadius: 2,
),

CMD.....
في هذا المثال، قمنا بتعيين الخيار blurRadiusإلى 100لجعل الظل ناعمًا للغاية وأكثر انتشارًا.

2. أسلوب التمويه
تعرف الخاصية blurStyleالموجودة في BoxShadowالفصل على نمط التمويه المطبق على الظل.
CMD...

BoxShadow(
  blurRadius: 100,
  blurStyle: BlurStyle.solid,
  color: Colors.black,
  offset: Offset.zero,
  spreadRadius: 2,
),

CMD.....
في الكود أعلاه، نستخدم BlurStyle.solid، والذي ينشئ ظلًا صلبًا وحاد الحواف.
3. اللون
تسمح لنا الخاصية colorالموجودة في BoxShadowالفصل بتحديد لون الظل.

CMD...

BoxShadow(
  blurRadius: 100,
  blurStyle: BlurStyle.solid,
  color: Colors.blue,
  offset: Offset.zero,
  spreadRadius: 2,
),

CMD.....

في هذا الكود، قمنا بتغيير colorإلى Colors.blue، مما سيؤدي إلى تحويل الظل إلى اللون الأزرق. يمكنك استخدام أي لون تريده، أو حتى التدرجات اللونية للحصول على تأثيرات أكثر إبداعًا.

4. الإزاحة
تحدد الخاصية offsetالموجودة في BoxShadowالفصل موضع الظل بالنسبة للأداة.
CMD...

BoxShadow(
  blurRadius: 100,
  blurStyle: BlurStyle.solid,
  color: Colors.blue,
  offset: Offset(25, 25),
  spreadRadius: 2,
),

CMD.....
في هذه الحالة، قمنا بتعيين القيمة offsetإلى Offset(25, 25)، وهذا من شأنه تحريك وحدات بكسل الظل 25إلى اليمين ووحدات 25بكسل أسفل الأداة. وهذا من شأنه أن يخلق تأثير ظل يعطي انطباعًا بأن الضوء قادم من الاتجاه العلوي الأيسر.
يمكننا أيضًا استخدام القيم السلبية لتحريك الظل في الاتجاه المعاكس.
CMD...

BoxShadow(
  blurRadius: 100,
  blurStyle: BlurStyle.solid,
  color: Colors.blue,
  offset: Offset(-25, -25),
  spreadRadius: 2,
),

CMD.....
في الوقت الحالي، قمنا بتغيير offsetإلى Offset(-25, -25)، وهذا من شأنه أن يحرك وحدات بكسل الظل 25إلى اليسار 25والبكسلات الموجودة أعلى الأداة. ويعطي هذا التغيير انطباعًا بأن الضوء قادم من الاتجاه السفلي الأيمن.

5. انتشار نصف القطر
تحدد الخاصية spreadRadiusالموجودة في BoxShadowالفصل مدى انتشار الظل من حدود الأداة.


CMD...

BoxShadow(
  blurRadius: 100,
  blurStyle: BlurStyle.solid,
  color: Colors.blue,
  offset: Offset.zero,
  spreadRadius: 50,
),

CMD.....

في هذا المثال، قمنا بتعيين spreadRadiusإلى 50، مما يعني أن الظل سيمتد 50بكسلًا من حواف الأداة.

استخدام عناصر واجهة المستخدم المتعددة BoxShadow لإضافة الظلال في Flutter
ربما لاحظت أن boxShadowخاصية الفصل BoxDecorationتأخذ قائمة من BoxShadowالحالات. وهذا يعني أنه يمكنك تطبيق ظلال متعددة.

CMD...

Container(
  width: 200,
  height: 200,
  decoration: BoxDecoration(
    color: Colors.white,
    borderRadius: BorderRadius.circular(8),
    boxShadow: [
      BoxShadow(
        blurRadius: 5,
        color: Colors.blue.withOpacity(0.8),
        offset: const Offset(5, 5),
        spreadRadius: 5,
      ),
      BoxShadow(
        blurRadius: 5,
        color: Colors.green.withOpacity(0.8),
        offset: const Offset(-5, -5),
        spreadRadius: 5,
      ),
    ],
  ),
),

CMD.....

في مقتطف التعليمات البرمجية هذا، أضفنا مثيلين BoxShadowداخل boxShadowالخاصية. كل مثيل له لون مختلف، وواحد له إزاحة موجبة بينما الآخر له إزاحة سالبة. يؤدي هذا إلى إنشاء ظل حول Containerالأداة بألوان متعددة.
إضافة الظلال إلى الأدوات الأخرى
حتى الآن، نقوم بإنشاء ظلال باستخدام Containerالأداة مع BoxDecorationالفصل. تحتوي بعض الأدوات أيضًا على ظلال افتراضيًا ويمكن تعديلها بسهولة باستخدام الخصائص. خذ Cardالأداة كمثال.
CMD...

import 'package:flutter/material.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(
        body: Center(
          child: Card(
            color: Colors.blue,
            elevation: 20,
            shadowColor: Colors.black,
            child: SizedBox(
              width: 200,
              height: 200,
            ),
          ),
        ),
      ),
    );
  }
}

CMD.....
في هذا الكود، نستخدم Cardعنصر واجهة المستخدم ذي الخلفية الزرقاء. ونضبط elevationto 20لجعل الظل أكثر بروزًا، و shadowColorto Colors.blackلجعل الظل داكنًا.
كما ترى، فإن تغيير الظل على Cardالأداة بسيط! ومع ذلك، BoxShadowفإن الطريقة أكثر مرونة. لحسن الحظ، في معظم الحالات، يمكنك تغليف أدواتك باستخدام Containerأداة، وسنتناول المزيد حول هذا في القسم التالي.

تغليف عناصر واجهة المستخدم باستخدام حاوية لإضافة الظلال في Flutter
في الحالات التي لا تكون فيها الظلال المحددة مسبقًا كافية، يمكنك تغليف الأداة باستخدام Containerأداة وتطبيق ظل مخصص BoxDecoration، كما تمت مناقشته سابقًا.

CMD...

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(
      home: Scaffold(
        body: Center(
          child: Container(
            decoration: BoxDecoration(
              boxShadow: [
                BoxShadow(
                  blurRadius: 25,
                  blurStyle: BlurStyle.normal,
                  color: Colors.grey.withOpacity(0.5),
                  offset: Offset.zero,
                  spreadRadius: 25,
                ),
              ],
            ),
            child: const Card(
              color: Colors.blue,
              child: SizedBox(
                width: 200,
                height: 200,
              ),
            ),
          ),
        ),
      ),
    );
  }
}

CMD.....
في مقتطف التعليمات البرمجية هذا، قمنا بتغليف Cardالأداة باستخدام Containerأداة. ومن خلال القيام بذلك، يمكننا تطبيق تأثير ظل مخصص على البطاقة باستخدام BoxShadowالفئة. هنا، قمنا بإنشاء ظل مع a blurRadiusof 25وa blurStyleof BlurStyle.normalوa colorof grey مع تعتيم 0.5وan offsetof Offset.zeroوa spreadRadiusof 25.

لقد قمنا أيضًا بإزالة الخاصيتين elevationand shadowColorمن Cardالأداة للتأكد من أن الظل المخصص وظل البطاقة الافتراضي لا يتداخلان مع بعضهما البعض.

خاتمة
عندما يتعلق الأمر بـ Flutter، فهناك العديد من الطرق لإضافة الظلال إلى عناصر واجهة المستخدم الخاصة بك. يمكنك دائمًا استخدام Containerعنصر واجهة المستخدم مع BoxDecorationالفئة. تحتوي بعض عناصر واجهة المستخدم أيضًا على ظلال محددة مسبقًا يمكن تغييرها باستخدام الخصائص.