-
المساهمات
4376 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
30
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو بلال زيادة
-
يمكنك استخدام FutureBuilder و التأكد من انه يرجع بيانات أو لا بحيث إذا يرجع بيانات تقوم بإضهارها و إذا لا يرجع تقوم بعرض واجهة فارغ أو نص يخبر المستخدم أنه لا يوجد داتا. كيف يمكن ذلك FutureBuilder تمكنك من استخدام AsyncSnapshot و هذه تحتوي على خاصية hasData للتأكد من رجوع البيانات أو أنه فارغ فمثلا import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); /// This is the main application widget. class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); static const String _title = 'Flutter Code Sample'; @override Widget build(BuildContext context) { return const MaterialApp( title: _title, home: MyStatefulWidget(), ); } } /// This is the stateful widget that the main application instantiates. class MyStatefulWidget extends StatefulWidget { const MyStatefulWidget({Key? key}) : super(key: key); @override _MyStatefulWidgetState createState() => _MyStatefulWidgetState(); } class _MyStatefulWidgetState extends State<MyStatefulWidget> { final Future<String> _calculation = Future<String>.delayed( const Duration(seconds: 2), () => 'Data Loaded', ); @override Widget build(BuildContext context) { return DefaultTextStyle( style: Theme.of(context).textTheme.headline2!, textAlign: TextAlign.center, child: FutureBuilder<String>( future: _calculation, // a previously-obtained Future<String> or null builder: (BuildContext context, AsyncSnapshot<String> snapshot) { List<Widget> children; if (snapshot.hasData) { children = <Widget>[ const Icon( Icons.check_circle_outline, color: Colors.green, size: 60, ), Padding( padding: const EdgeInsets.only(top: 16), child: Text('Result: ${snapshot.data}'), ) ]; } else if (snapshot.hasError) { children = <Widget>[ const Icon( Icons.error_outline, color: Colors.red, size: 60, ), Padding( padding: const EdgeInsets.only(top: 16), child: Text('Error: ${snapshot.error}'), ) ]; } else { children = const <Widget>[ SizedBox( child: CircularProgressIndicator(), width: 60, height: 60, ), Padding( padding: EdgeInsets.only(top: 16), child: Text('Awaiting result...'), ) ]; } return Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: children, ), ); }, ), ); } }
- 3 اجابة
-
- 1
-
الرجاء إرفاق مجلد مشروعك .
-
يجب عليك استخدام أحدى الحزمتين للمصادقة مثل JWT, PASSPORT و يمكنك إيجاد passport من هنا و jwt من هنا . الفكرة وما فيها هي أن تقوم بأرجاع بيانات التي تريدها بصيغة json لكي يتم قرائتها والتعامل معها. لارافل تقدم أكثر من طريقة لأرجاع البيانات بصيغة json فيمكنك استخدام response()->json(); لارجاع البيانات ستجد شرح كامل لها من هنا أو يمكنك استخدام apiResource وهذا شرح كامل لها من هنا على موقع لارافل. في الموقع التي تريد جلب البيانات إليه من موقع أخر يمكنك استخدام curl لجلب البيانات أو يمكنك استخدام guzzle فمثلا يمكنك الاتصال ب api هكذا $response = Http::get('https://yourwebsite.com/api/v1/questions', [ 'apiKey' => 'توكن المصادقة', ]); وجلب البيانات هكذا $q = json_decode($response->body());
- 2 اجابة
-
- 1
-
حتعمل كالتالي حتغير في الاستعلام إلى $mohamad = $conn->query("SELECT c.id as cid, orders.id as oid, admins.id as aid FROM clients c , orders o , admins a WHERE c.id = o.client_id && a.id = o.admin_id"); بحيث تقوم باستخدام اسماء مستعارة لكل جدول وهنا قمنا باستخدام اسم المستعار اول حرف من اسم الجدول لكل الجداول وفي استعلام PHP <?php while ($row = $mohamad->fetch_assoc()) { echo ' <tr> <td class="text-center text-muted">' . $row['cid'] . '</td> <td class="text-center text-muted">' . $row['oid'] . '</td> <td class="text-center text-muted">' . $row['aid'] . '</td>
-
يمكنك استخدام حزمة huawei_account, يجب إنشاء تطبيق لمشروعك في AppGallery Connect. إنشاء مشروع في App Gallery Connect سجّل الدخول إلى AppGallery Connect وحدد مشاريعي. انقر فوق مشروعك من قائمة المشروع. انتقل إلى إعداد المشروع - معلومات عامة - وانقر فوق إضافة التطبيق. إذا كان هناك تطبيق موجود في المشروع ، وتحتاج إلى إضافة تطبيق جديد ، فقم بتوسيع منطقة تحديد التطبيق في الجزء العلوي من الصفحة وانقر فوق إضافة التطبيق. في صفحة إضافة التطبيق ، أدخل معلومات التطبيق ، وانقر فوق موافق. دمج المكوِّن الإضافي لحساب Flutter قم بتسجيل الدخول إلى AppGallery Connect وحدد مشاريعي. ابحث عن مشروع التطبيق الخاص بك ، وانقر فوق اسم التطبيق المطلوب. اذهب إلى إعداد المشروع - معلومات عامة. في قسم معلومات التطبيق ، انقر فوق agconnect-service.json لتنزيل ملف التكوين. قم بإنشاء مشروع Flutter إذا لم يكن لديك واحد. انسخ ملف agconnect-service.json إلى دليل android / app الخاص بمشروع Flutter. انسخ ملف التوقيع الذي تم إنشاؤه في قسم إنشاء شهادة التوقيع ، إلى دليل android / app الخاص بمشروع Flutter. تحقق مما إذا كان ملف agconnect-services.json وملف التوقيع قد تمت إضافتهما بنجاح إلى دليل android / app الخاص بمشروع Flutter. افتح ملف build.gradle في دليل android لمشروع Flutter الخاص بك. انتقل إلى buildscript ثم قم بتكوين عنوان مستودع Maven و agconnect plugin لـ HMS SDK. buildscript { repositories { google() jcenter() maven { url 'https://developer.huawei.com/repo/' } } dependencies { /* * <Other dependencies> */ classpath 'com.huawei.agconnect:agcp:1.4.1.300' } } انتقل إلى allprojects ثم قم بتكوين عنوان مستودع Maven لـ HMS SDK. allprojects { repositories { google() jcenter() maven { url 'https://developer.huawei.com/repo/' } } } افتح ملف build.gradle في دليل android / app. apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply plugin: 'com.huawei.agconnect' يمكنك تصفح الحزمة و معرفة ما تقدمه من خصائص من هنا
- 1 جواب
-
- 1
-
يمكنك استخدام inner join فمثلا SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; أو SELECT select_list FROM t1 INNER JOIN t2 ON join_condition1 INNER JOIN t3 ON join_condition2 ...; ففي حالتك يمكنك استخدام SELECT orderNumber, orderDate, customerName, orderLineNumber, productName, quantityOrdered, priceEach FROM orders INNER JOIN orderdetails USING (orderNumber) INNER JOIN products USING (productCode) INNER JOIN customers USING (customerNumber) ORDER BY orderNumber, orderLineNumber; أو يمكنك قراءة أكثر عن inner join و تطبيق ما تريد باستخدامها
-
أخي ببساطة في ملف .env قم بتغيير APP_DEBUG=true إلى APP_DEBUG=false وهنا لا تظهر إي مشاكل في المتصفح و إذا كنت تريد إيجاد الأخطاء تجدها في ملف logs
- 3 اجابة
-
- 1
-
هناك إضافة رائعة يمكن استخدامها وهي woocommerce-wholesale-prices يمكنك من خلال صفحة الإضافة التعامل معها و تضع علامة التخفيض بشكل ممتاز . حدد المنتج الذي تريد تعديله.قم بالتمرير لأسفل إلى قسم بيانات المنتج. في علامة التبويب عام ، ابحث عن العنوان الجديد Wholesale Prices . يمكنك إيضا متابعة شروحات استخدام هذه الإضافة ستجد الأمر سهل جدا في التعامل معها.
- 2 اجابة
-
- 1
-
يمكنك تمرير عنوان IP الخاص بالعميل برأس X_FORWARDED_FOR ، وبهذه الطريقة لا يتم حظر عنوان IP للخادم الثاني. Route::get('/', function (Request $request) { $client = new \GuzzleHttp\Client(); $request = $client->request('GET', '/api/example', [ 'headers' => ['X_FORWARDED_FOR' => $request->ip()] ]); $response = $request->getBody(); }); على خادمك الرئيسي ، تحتاج إلى إضافة خادمك الثاني كخادم موثوق به إلى App \ Http \ Middleware \ TrustProxies من أجل الحصول على IP من هذا العنوان. class TrustProxies extends Middleware { protected $proxies = [ '192.168.1.1', // <-- set the ip of the second server here ]; } الآن كل مكالمة إلى $request->ip() على الخادم الرئيسي سيكون لها عنوان IP الأصلي للعميل بدلاً من IP الخاص بالخادم الثاني. سيؤثر ذلك أيضًا على throttling.
-
يمكنك تنفيذ الأمر التالي php artisan vendor:publish --tag=jetstream-views بعد تنفيذ هذا الأمر ستجد UpdateProfileInformationForm في app\Http\Livewire\UpdateProfileInformationForm.php و ملف view في resources\views\profile\update-profile-information-form.blade.php عند القيام بذلك, يمكنك تغييرها كيف ما تريد. إذا لم ينجح الأمر التالي يمكنك إنشاء مجلد Livewire في المسار التالي app\Http\ إذا لم يكن موجود قم بإنشاء ملف UpdateProfileInformationForm.php داخل Livewire و من ثم نسخ ما بداخل \vendor\laravel\jetstream\src\Http\Livewire\UpdateProfileInformationForm.php و في JetstreamServiceProvider قم بنسخ Livewire::component('profile.update-profile-information-form', UpdateProfileInformationForm::class); يمكنك الآن تخصيص إصدارك من UpdateProfileInformationForm وفقًا لاحتياجاتك.
- 3 اجابة
-
- 1
-
في JetstreamServiceProvider ضع التالي public function register() { Jetstream::ignoreRoutes(); } و في FortifyServiceProvider ضع التالي public function register() { Fortify::ignoreRoutes(); } وانسخ المسارات من Fortify vendor/laravel/fortify/routes/routes.php و من Jetstream vendor/laravel/jetstream/routes/livewire.php إلى ملف web.php في Group الذي تحتاجه
- 1 جواب
-
- 1
-
بعد تثبيت Laravel يجب عليك تنفيذ الأوامر التالية لتحميل ملفات الجافاسكريبت و css للمشروع composer require laravel/ui:^2.4 php artisan ui bootstrap npm install npm run dev
- 4 اجابة
-
- 2
-
صحيح
- 3 اجابة
-
- 1
-
تذهب إلى SDK الخاص بفلاتر وليس مجلد المشروع ستجد المسار المذكور كما في الصورة المرفقة. ايضا في المسار التالي <ProjectRoot>/ios/Flutter/Release.xcconfig تضع EXTRA_GEN_SNAPSHOT_OPTIONS=--obfuscate
- 3 اجابة
-
- 1
-
نعم, تقوم باستخدام السطر التالي لإصدار نسخة معماة أي مشفرة, أي يخفي التعتيم أسماء الوظائف والفئات في كود Dart المترجم ، مما يجعل من الصعب على المهاجم إجراء هندسة عكسية لتطبيقك الخاص. flutter build apk --obfuscate --split-debug-info=/<project-name>/<directory>
- 1 جواب
-
- 1
-
يمكنك ضبط android Studio ليتم تشغيله دائما باستخدام stacktrace, قم بالتوجه إلى Settings > Build, Execution, Deployment > Compiler وفي Command-line Option ضع --debug أو --info أو --stacktrace ايضا يمكن ان يساعدك هو حذف مجلد gradle و إعادة مزامنة المشروع مرة أخرى.
-
في محرر النصوص TinyMCE يمكنك إضافة ميزات أكثر للمحرر يمكنك استخدام Quicktags API للتعديل على الإعدادات الأفتراضية للمحرر هكذا function my_quicktags() { if ( wp_script_is( 'quicktags' ) ) { ?> <script type="text/javascript"> QTags.addButton( 'eg_php', 'PHP', '<pre><code class=\"language-php\">', '</code></pre>', 'p', 'PHP Code', 100 ); QTags.addButton( 'eg_css', 'CSS', '<pre><code class=\"language-css\">', '</code></pre>', 'q', 'CSS Code', 100 ); QTags.addButton( 'eg_html', 'HTML', '<pre><code class=\"language-html\">', '</code></pre>', 'r', 'HTML Code', 100 ); </script> <?php } } add_action( 'admin_print_footer_scripts', 'my_quicktags' ); طبعا الخطاف (HOOK) admin_print_footer_scripts: هو خطاف إجراء يستخدم لطباعة البرامج النصية في تذييل صفحات المسؤول. طبعا في الكود المرفق إعلاه قمنا بإضافة ثلاثة أزرار أخرى إلى أي مثيل لـ Quicktags في لوحة الإدارة. يمكنك زيارة Quicktags_API للمعرفة اكثر عن كيفية و تخصيص محرر النصوص.
-
فليكن لديك عدة جداول: جدول خاص بالموظفين. CREATE TABLE `employees` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL, `email` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; جدول خاص بالمدراء. CREATE TABLE `managers` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL, `email` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; جدول خاص بالأجتماعات. CREATE TABLE `mettings` ( `id` int(11) NOT NULL, `employee_id` int(11) NOT NULL, `manager_id` int(11) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; عندما يقوم الموظف بطلب إجتماع مع أحدى المدارء يتم تخزين جلسة أو تخزين بيانات الأجتماع في جدول الأجتماعات ويصل تنبيه للمدير الذي قام الموظف بطلب الأجتماع معه. فلنفرض إن الموظف رقم 1 طلب الاجتماع مع المدير الذي يحمل رقم 3 فتكون البيانات في جدوا الاجتماعات مثل الصورة المرفقة, فالحقيقة هناك عدة طرق يمكن اتباعها يمكنك التفكير أكثر ستجد عدة حلول تناسبك.
-
يمكنك البحث عن إصدار يناسب إصدار Laravel لديك وتقم بتحميله قم بمراجعة صفحة الحزمة من هنا
-
التطبيق لا يعمل بدون دالة main.
- 6 اجابة
-
- 1
-
ممكن ترفق ملفات المشروع كاملاً ؟
- 6 اجابة
-
- 1
-
قم بأنشاء ملف robot.txt و ضع فيه التالي User-agent: * Disallow: / طبعا هذا الأمر يعني إذا كان الموقع تحت التطوير ولا تريد محركات البحث الوصول إليه تستخدمه. قم بوضع التالي إذا أردت لمحركات البحث فهرسة موقعك ووصول الزاحف إلى موقعك User-agent: * Disallow: لو أردت توجيه زاحف لمحرك بحث معين مثل قوقل يجب عليك معرفة اسم الزاحف مثل User-agent: Googlebot-Image Disallow: /images/ طبعا هذه بعض اسماء زواحف محركات البحث Bingbot – Bing Googlebot – Google Googlebot-Image – Google Images Googlebot-News – Google News Teoma – Ask هناك الكثير من الأوامر التي تستطيع إضافتها للملف, يرجى البحث عنها و قرائتها. يمكنك وضع الملف في المسار الرئيسي في public_html
- 2 اجابة
-
- 2
-
حيشتغل على المحاكي طبيعي ولكن على الجهاز الحقيقي ما راح يشتغل, أنت بحاجة إلى MaterialApp أو WidgetsApp حول عنصر واجهة المستخدم الخاص بك. عند استخدام MediaQuery ستبحث Flutter عن شجرة عناصر واجهة المستخدم للعثور على عنصر واجهة المستخدم. فالكود الخاص بك سيصبح void main() => runApp(App()); class App extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: EasyLocalization( saveLocale: true, supportedLocales: [Locale('en', 'US'), Locale('ar', 'SA')], path: 'assets/translations', fallbackLocale: Locale('en', 'US'), child: loginpage(), ), ); } } class loginpage extends StatefulWidget { LoginUserState createState() => LoginUserState(); } class LoginUserState extends State<loginpage> { final _formKey = GlobalKey<FormState>(); void _toggleVisibility(){ setState(() { _isHidden = !_isHidden; }); } Widget buildTextField(String hintText){ return Container( margin: EdgeInsets.all(5), child: TextFormField( validator: (value) { if (value.isEmpty) { return 'Requiredfield'.tr(); } return null; }, maxLength: 12, controller: passwordController, decoration: InputDecoration( hintText: hintText, labelText: 'Password'.tr(), hintStyle: TextStyle( color: Colors.grey, fontSize: 16.0, ), border: OutlineInputBorder( ), prefixIcon: Icon(Icons.lock), suffixIcon: hintText == 'Password'.tr() ? IconButton( onPressed: _toggleVisibility, icon: _isHidden ? Icon(Icons.visibility_off) : Icon(Icons.visibility), ) : null, ), obscureText: hintText == 'Password'.tr() ? _isHidden : false, ), ); } } } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Form( key: _formKey, child: Stack( children: [ Column( children: [ Container( child: SingleChildScrollView( child: SizedBox( width: double.infinity, height:350, child: Center( child: Column( children: <Widget>[ SizedBox( height: 2.0, ), new Stack( children: <Widget>[ Container( margin: EdgeInsets.symmetric(horizontal:45, vertical: 5), child: Image.asset( ("assets/log.png"), height: 310, width: 310, ), ), ], ), ], ), ), ), ), ), ], ), SingleChildScrollView( padding: EdgeInsets.only(left: 7.0, right: 7.0, top: 290.0), child: Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8.0), ), elevation: 3, child: Center( child: Column( children: <Widget>[ Padding( padding: const EdgeInsets.all(5.0), ), Container( margin: EdgeInsets.all(5), child: TextFormField( keyboardType: TextInputType.number, validator: (value) { if (value.isEmpty) { return 'Requiredfield'.tr(); } return null; }, maxLength: 12, controller: phoneController, decoration: InputDecoration( prefixIcon: Icon(Icons.phone_iphone), border: OutlineInputBorder(), labelText: 'Phonenumber'.tr()), )), buildTextField('Password'.tr()), Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ RaisedButton( child: Text('Login'.tr(), style: TextStyle(fontSize: 18.0, color: Colors.black),), padding: EdgeInsets.only(top: 16.0, bottom:16.0, left: 90.0, right: 90.0), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(7)), onPressed: () { }, ), InkWell( onTap: () { Navigator.push( context, MaterialPageRoute(builder: (context) => Sign())); }, child: Container( margin: EdgeInsets.symmetric(vertical: 20), padding: EdgeInsets.all(15), alignment: Alignment.bottomCenter, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'DontHave'.tr(), style: TextStyle(fontSize: 15, fontWeight: FontWeight.w600), ), SizedBox( width: 10, ), ], ), SizedBox( height: 20, ), Row( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ IconButton( icon: Icon( Icons.help_outline, color: const Color(0xFF001c3e), size: 47, ), onPressed: () { }, ), IconButton( icon: Icon( Icons.language, color: const Color(0xFF001c3e), size: 47, ), onPressed: () { }, ), ], ), ], ), ), ), ], ), ], ), ), ), ), ], ), ), ), ); } }
- 6 اجابة
-
- 1
-
يجب مراسلة الدعم الفني لأي شركة تريد ربطها بتطبيقك سواء هم حيزودك بSDK او Package يمكن استخدامها في التطبيق عن طريق دمجها أو ممكن يزودوك بapi كامل و انتا في تطبيقك تقدر تستخدم هذا api. يمكنك انت من صنع حزمة عن طريق api المزود من قبل الشركة ويمكنك استخدامها في تطبيقات في المارات التالية.
-
افتح podfile وقم بالبحث عن # platform :ios, وقم بإزالة علامة #, أو قم بحذف ملف Podfile.lock ,وقم بتنفيذ الأمر التالي: pod install أو طبق الأوامر التالية: flutter clean rm -Rf ios/Pods rm -Rf ios/.symlinks rm -Rf ios/Flutter/Flutter.framework rm -Rf ios/Flutter/Flutter.podspec cd ios pod install cd .. flutter build ios
- 3 اجابة
-
- 1