اذهب إلى المحتوى

Flutter Dev

الأعضاء
  • المساهمات

    787
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    2

كل منشورات العضو Flutter Dev

  1. تحيه طيبه للجميع احتاج الى استعمال أداة CheckboxListTile ولكني أحاول ان اجلب البيانات التي سوف يقوم المستخدم باختيارها والتي سوف تعرضها الاداة من قاعدة البيانات بمعنى ان اربط اداة CheckboxListTile بجدول من قاعدة البيانات من خلال عمل FutureBuilder بمعنى ان اضعها بداخل FutureBuilder لتصبح كالتالي: class testpage extends StatefulWidget { @override _testtttttState createState() => _testtttttState(); } class _testtttttState extends State<testpage> { @override void initState() { BooksType(); super.initState(); } var apiURL; Future BooksType() async { apiURL = '*******************.php'; var response = await http.post(Uri.parse(apiURL)); var responsebody = jsonDecode(response.body); if (responsebody.length > 0) { return responsebody; } } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Column( children: [ FutureBuilder( future: BooksType(), builder: (context, AsyncSnapshot snapshot) { if (snapshot.hasData) { return Padding( padding: const EdgeInsets.all(5.0), child: ListView.builder( scrollDirection: Axis.vertical, shrinkWrap: true, physics: ScrollPhysics(), itemCount: snapshot.data.length, itemBuilder: (context, index) { return Container( child: Column( children: <Widget>[ Card( elevation: 3, child: CheckboxListTile( title: Text("${snapshot.data[index]['BookSpecifications']}"), value: snapshot.data[index]['test'], onChanged: (bool ? value) { } ) ), ])); }), ); } else if (snapshot.hasError) { return Center( child: CircularProgressIndicator( valueColor: new AlwaysStoppedAnimation<Color>(Colors.black), ),); } // By default, show a loading spinner. return Center( child: SizedBox( height: MediaQuery.of(context).size.height / 1.3, child: CircularProgressIndicator( valueColor: new AlwaysStoppedAnimation<Color>(Colors.black), ), )); }, ) ], ), ), ); } } ولكن دائما احصل على الخطاء التالي: Failed assertion: line 146 pos 15: 'tristate || value != null': is not true. هل طريقتي خطاء وهل توجد طريقة مختلفة لفعل ذلك؟ ياليت الذي لديه فكره يفيدنا
  2. تحيه طيبه للجميع قمت بعمل صفحة تحتوي على Alert Dialog وفي داخله قمت بوضع list view لعرض مجموعة من البيانات التي احصل على من السيرفر ثم قمت بوضع Text Field في نفس Alert Dialog للبحث في القائمة التي احصل عليها. الان مشكلتي لو قام المستخدم بكتابة محتوى البحث المطلوب في خانة Text Field لن يتم تصفية البيانات بمعنى الكود لن يعمل ولكن لو قمت بأغلاق Alert Dialog وإعادة فتحه سوف اجد ان البيانات تم تصفيتها حسب محتوى البحث الذي قمت بإدخالها سابقا في Text Field . بمعنى الكود لن يقوم بتصفية البيانات الا في حالة قمت بأغلاق Alert Dialog بعد ادخال البيانات وإعادة فتحه من جديد حتى احصل على القائمة التي تم تصفيتها وظهور النتائج الكود المستعمل كامل هو كالتالي: class _testwoState extends State<tottto> { bool showicon = false; var apiURL; @override void initState() { getdata(); super.initState(); } Future getdata() async { setState(() { showicon = true; }); apiURL = 'https://****************.php'; var response = await http.post(Uri.parse(apiURL)); var responsebody = jsonDecode(response.body); if (responsebody.length > 0) { return responsebody; } else { showicon = false; } } TextEditingController editingController = TextEditingController(); Widget appBarTitle = Text('').tr(); Icon actionIcon = new Icon( Icons.search, color: CustomColors.firebaseNavy, ); String searchString = ""; TextEditingController searchController = TextEditingController(); void alertDialog(BuildContext context) { var alert = AlertDialog( content: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, children: [ TextField( inputFormatters: <TextInputFormatter>[ FilteringTextInputFormatter.deny(RegExp("[٠-٩]")), ], onChanged: (value) { setState(() { searchString = value; }); }, controller: searchController, style: new TextStyle( color: Colors.black, ), decoration: new InputDecoration( labelText: 'Name'.tr(), prefixIcon: new Icon(Icons.search), // hintText: "Send_To".tr(), hintStyle: new TextStyle(color: Colors.black)), ), FutureBuilder( future: getdata(), builder: (context, AsyncSnapshot snapshot) { if (snapshot.hasData) { return Container( width: 450, height: 500, child: ListView.separated( separatorBuilder: (BuildContext context, int index) => Divider(height: 1, thickness: 1), scrollDirection: Axis.vertical, shrinkWrap: true, physics: ScrollPhysics(), itemCount: snapshot.data.length, itemBuilder: (context, index) { return "${snapshot.data[index]['EnLocation']}".contains(searchString) ? Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: <Widget>[ Column( children: <Widget>[ Column( children: <Widget>[ ListTile( title: Text( "${snapshot.data[index]['EnLocation']}", style: TextStyle( fontSize: 17,)), ], ), // Divider(), ], ), // Divider(), ]) : Container(); }), ); } else if (snapshot.hasError) { return Center( child: Image.asset( 'assets/no_dataa.png', fit: BoxFit.contain, width: 180, height: 180, )); } // By default, show a loading spinner. return showicon ? SizedBox( height: MediaQuery.of(context).size.height / 1.3, child: Center( child: CircularProgressIndicator( valueColor: new AlwaysStoppedAnimation<Color>(Colors.black), ), ), ) : Center( child: SizedBox( height: MediaQuery.of(context).size.height / 1.3, child: Image.asset( 'assets/no_dataa.png', fit: BoxFit.contain, width: 180, height: 180, ), )); }, ), ], ), ), actions: <Widget>[ FlatButton( onPressed: () { // Navigator.of(context).pop(); Navigator.of(context, rootNavigator: true).pop('dialog'); }, child: Text('Close'), ) ], ); showDialog(context: context, builder: (BuildContext context) => alert); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Column(children: [ Padding( padding: const EdgeInsets.all(8.0), child: Card( child: ListTile( title: Text('Wake Up!'), trailing: Icon(Icons.keyboard_arrow_down), onTap: () => alertDialog(context), ), ), ), ]), ), ); } } حقيقه لا اعلم ما هو السبب ولكن المطلوب ان يعمل الكود في اثناء تسجيل محتوى التصفية و Alert Dialog مفتوح لا يمكن ان اترك المستخدم يقوم بكتابة ما يريد البحث عنه ثم اخبره ان يغلق Alert Dialog ويعود لفتحه من جديد للحصول على البيانات المطلوبة . لو فيه احد يعرف سبب المشكلة يساعدنا ولكم جزيل الشكر
  3. والله يا اخوي البرمجة ما تترك عقل صاحي ابد من يومين وانا الف ودور ابحث عن الحل ونسيت الموضوع هذا كامل ربي يجزيك الف خير يا رب واعتذر والله على التكرار
  4. حلقة ماذا اخي ؟ لا اذكر حقيقه ولكن لدي بيانات الان كثيره وارغب بالقيام بتخزينها في عمود مقابل لعمود مختلف العمود الاول بسيط هيا مجرد insert وتنتهي الامر ولكن الثاني هيا مشكلتي بالنسبة الى الكود أعلاه مجرد مثال لتوصيل الفكرة التي ابحث عنها
  5. اعتذر يبدو انني قمت بحذف الرد عن طريق الخطاء اخي الكريم انا ما أحاول القيام به ليس ترجمة النصوص انا أحاول ادخال بيانات في عمود ثاني مقابل لعمود يحتوي على بيانات في نفس الوقت شاهد هذا مثال وجدته على النت ولكن لم استطيع تطبيق دالة شرطيه عليه INSERT INTO students ( score2) VALUES ( 8), ( 8), ( 3), ( 7) ON DUPLICATE KEY UPDATE score2 = VALUES(score2); أيضا هذا مثال مختلف لنفس الفكرة التي ابحث عنها ولكن المشكلة هنا ان هذا الطريق يجب وضع id حبه حبه وانا ارغب بوضع داله شرطيه مثلا between id 1 and 30 UPDATE empdata SET phone = CASE WHEN id=1 THEN '840932345' WHEN id=2 THEN '890040908' WHEN id=3 THEN '675748389' WHEN id=6 THEN '909030309' ELSE phone END; @Wael Aljamal
  6. مرحبا اخي الكريم لا اذن انا غلطان الهدف ليس تحديث ملف بل إضافة أسماء جديده في العمود الثاني دفعه وحده ك مثال العمود الأول يحتوي على أسماء عربية تم تخزينها مسابقا مثل احمد - عيسى- بدر - يونس - خالد وقد اصبح لديهمid بنفس عددهم الان المشكلة يوجد عمود ثاني وهو الذي من المفترض ان أقوم بتخزين الأسماء نفسها المذكورة في العمود الأول ولكن باللغة الإنجليزية هذا ما ابحث عنه ولكن ارغب بتخزينهم دفعه واحد بمعنى ان أقوم بتنسيق الكود مره واحده واعمل له رن ويتم اضافتهم جميعا ك مثال ali - ahamd - badr - طبعا الأسماء رح تكون في العمود المقابل بنفس المعرف id الذي حصلوا عليه في اللغة العربية وليس سجلات جديده لو قمت بعمل insert جديد الان انا سوف يتم صنع سجلات جديده هذا المشكلة
  7. تحيه طيبه للجميع لدي جدول بيانات يحتوي على 3 اعمده ID , NAMEENGLISH,NAMEARABIC قمت بأدراج بيانات في العمود الأول NAMEARABIC وصار لدي 7 أسماء ك مثال الان انا لدي قائمة أسماء في الملاحظات وارغب بأدراجها في العمود المقابل وهو NAMEENGLISH انا اعلم ان يجب ان استعمل دالة update ولكن لم اعلم كيف ممكن اكتب الكود بتحديد باعتقادي ان الكود سوف يحتوي على update وأيضا جمله شرطيه وهيا BETWEEN ليكون اعتمادنا على اول عمود في الجدول عمود ID حتى استطيع ادراج بيانات في العمود المقابل احتاج مساعده لمعرفة كيفية كتابة الكود لفعل ذلك هذا الكود هو لتحديث سجل واحد ولكن انا احتاج ان أقوم بتحديث اكثر من سطر واحد في نفس العمود UPDATE employees SET NAMEENGLISH = 'Marwan' WHERE id BETWEEN 1 and 7 ;
  8. اشاهد في بعض تطبيقات التواصل الاجتماعي وأيضا التطبيقات التجارية يتم إضافة عداد او توقيت او تاريخ زمني على سبيل المثال منتج تم عرضه في تطبيق تجاري توجد ساعه او توقيت صغير خارج المنشور مكتوب عليه ( منذ مثلا 1 ساعه او منذ 3 أيام )ويبقى هذا العدد يحسب الأيام بشكل مستمر كيف يتم عمل ذلك او عمل هذا العدد الزمني ؟ مع العلم ان مشروعي من خلال flutter وتوجد ملفات php + قاعدة بيانات اون لاين MySQL
  9. أحاول استعمال if الشرطية في ملفات PHP قبل الاتصال بقاعدة البيانات ولدي الكود التالي: <?php require_once 'connt.php'; $id=$_GET['id']; $IDCat=$_GET['IDCat']; if($_GET['IDCat']== '310') { $sql="SELECT * FROM ....... }else if($_GET['IDCat']=='315') { $sql="SELECT * FROM ....... } $stmt = $con->prepare($sql); $stmt->bind_param("s",$id); $stmt->execute(); $result = $stmt->get_result(); $array = array(); while ($row = mysqli_fetch_assoc($result)) { $array[] = $row; } echo ($result) ? json_encode(array("code" => 1, "result"=>$array)) : json_encode(array("code" => 0, "message"=>"Data not found !")); ?> هل طريقة كتابة الكود بشكل هذا صحيحة ؟وامانه ؟ موقع الشرط وكتابته : if($_GET['IDCat']== '310') بشكل هذا هل هو صحيح ؟ ام توجد طريقة مختلفة افضل لفعل ذلك؟ حقيقه هذا اول مره استعمل الشرط في ملفات PHP ياليت أصحاب الخبرة يفيدونا الهدف الشرط هنا انني ارغب لو قمت بأرسال الرقم الفلاني ان تتفعل الاستعلام الذي في ذاك الشرط بمعنى يعتمد على الرقم الذي سوف يحصل عليه
  10. لا اعتقد هذا الامر سوف ينجح لدي اخي الكريم ولكن لدي حل مختلف وهيا دمج الجداول وتفريق البيانات من خلال عمود معرف منفرد بمعنى Sub ID ولكن مشكلتي فقط انني في المستقبل مع محاولة حذف بيانات واضافة بيانات في الجدول هذا سوف تحصل مشكلة كبيره في هذا العمود بحيث انني سوف احتاج الى إعادة ترقيمه بشكل يدوي كنت فاصل الجداول لهذا السبب الجداول المنفصلة يسهل إدارتها حذف واضافته وما شابه
  11. هل يمكن تجزئته إلى استعلامين منفصلين اخي بخصوص هذا الامر كيف يمكن فعل ذلك بحيث ان الاتصالان يكونوا متصلين ببعض او مرتبطات ببعض؟
  12. مرحبا اخي الكريم هيا ليست فارغه لدي لا توجد مشكله اخوي انا فقط ارغب بمعرفة اذا كان توجد طريقة لتقسيم الاستعلام وجعله يعمل بشكل متسلسل ؟ اذا كان لديك طريقه لفعل ذلك شاهد اخي لقد وجدت المشكلة ولكن مع الأسف لا يوجد حل لها في هذا الموضوع https://stackoverflow.com/questions/32058844/maximum-no-of-table-we-can-left-join-in-one-mysql-query#:~:text=The%20maximum%20number%20of%20tables,a%20single%20join%20is%2061. سوف تفهم مشكلتي اكثر من خلال هذا المشاركة @Hassan Hedr
  13. مرحبا اخي الكريم قصدك في الملف التالي بهذا الشكل؟ <?php $host='localhost'; $username=''; $pwd=''; $db=""; $con=mysqli_connect($host,$username,$pwd,$db) or die('Unable to connect'); $db = new PDO($host, $username, $pwd, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]); if(mysqli_connect_error($con)) { echo "Failed to Connect to Database ".mysqli_connect_error(); } ?> قمت بتعديل على صفحة الاتصال قليلا وحصلت على النتيجة التأليه اضافيه عن السابق Warning: mysqli::prepare(): Couldn't fetch mysqli in /home/*****/getlist.php on line 76 @Hassan Hedr
  14. مرحبا اخي الكريم الاستعلام صحيح 100% قمت بمحاولة حذف سطر مختلف عن السطر الأخير الذي قمت بإضافته والكود اصبح يعمل بشكل طبيعي هذا يعني ان الاستعلام اصبح كبير جدا حقيقه اول مره تمر على هذا المشكلة انا بنفسي لم يسبق ان كتبت سطر استلام كبير الى هذا الحد تقريبا 60 سطر من عمليات LEFT JOIN هل توجد طريقته لتقسيم الاستعلام لحل هذا المشكلة ؟ عند انقاص سطر واحد من الاستعلام يعود للعمل بشكل طبيعي لا يهم وموقع السطر الكود بشكل التالي اخي الكريم مع العلم انني فقط حذفت اسطر الاستعلام <?php require_once 'connt.php'; $id=$_GET['id']; $sql="SELECT * FROM topics LEFT JOIN ######### LEFT JOIN ######### LEFT JOIN ######### LEFT JOIN ######### LEFT JOIN ######### where topics.id = ? " ; $stmt = $con->prepare($sql); $stmt->bind_param("s",$id); $stmt->execute(); $result = $stmt->get_result(); $array = array(); while ($row = mysqli_fetch_assoc($result)) { $array[] = $row; } echo ($result) ? json_encode(array("code" => 1, "result"=>$array)) : json_encode(array("code" => 0, "message"=>"Data not found !")); ?> @Hassan Hedr
  15. تحيه طيبه للجميع قمت باستعمال LEFT JOIN عدد كبير من المرات في ملف واحد والان يظهر لدي المسج التالي: Fatal error: Uncaught Error: Call to a member function bind_param() on bool in /home/**********/getli.php:76 Stack trace: #0 {main} thrown in /home/getli.php on line 76 انا متأكد من السطر انه قد كتب بشكل صحيح ولكن هل يوجد حد معين لعدد الاسطر التي ممكن اكتبها في الملف الواحد او الاستعلام الواحد؟ من LEFT JOIN؟ اذا كان نعم ما هو الحل اذن؟
  16. مرحبا اخي الامر يحتاج الى ممارسة مستمرة ومشاريع على ارض الواقع بالإضافة الى ان يوجد فرق بين قدرات الأشخاص من انسان الى انسان يعني ناس تتعلم بكل بساطه وسرعه وناس تحتاج اضعاف الوقت أيضا حبك للمجال يساعدك كثير نقطة اخيره .. لا تحاول تحفظ الاكواد فقط اهم طبيعة عملهم البرمجة حاجه جميله جدا كل التوفيق لك
  17. اهلا اخي الكريم نعم يتم رفعها على استضافة وقاعدة بيانات اون لاين توجد عمليات تتم من خلال flutter + ملفات php حتى يتم وضع الصور على السيرفر
  18. تحيه طيبه للجميع استفسار لو تكرمتم توجد بعض التطبيقات التجارية وانت تقوم برفع صور على التطبيق للمنتج لديهم يتم وضع شعار التطبيق بشكل تلقائي او توقيع نصي على تلك الصور كيف ممكن نعمل هذا الحركة في flutter بحيث لو تم رفع صوره على التطبيق لدي يتم وضع نص باسم التطبيق على الصورة ؟ ياليت اذا احد لديه فكره عن الامر يفيدنا ولكم جزيل الشكر
  19. مرحبا اخي الكريم نعم انا مريت على موضوع اجنبي من قبل وكان فيه بعض هذا الاختصارات وقمت بتجربتها على الاندرويد ستوديو ولم تعمل لذلك كنت اعتقد انها تفعل امر مختلف ولكن على ما يبدو انها تعمل على VS Code شكرا على التوضيح اخي الكريم
  20. تحيه طيبه للجميع توجد نقطة مزعجة في اكواد فلاتر حقيقه هو التسلسل الشجري الذي يحدث للكود في بعض الصفحات يصل التسلسل لعدد كبير من الاسطر بحكم العمل الذي يوجد في الصفحة طبعا لو قمت بأغلاق الاكود من خلال الأسهم الصغيرة المتوفرة على الجنب يحدث حل بسيط ولكن المشكلة بعد اغلاق والعودة جميع الاكواد تعود الى طبيعتها الا يوجد اختصار من الكيبورد على سبيل المثال يقوم بأغلاق جميع الاكود في الصفحة دفعة واحده ؟
  21. مرحبا اخي الكريم شاكر لك مساعدتك عزيزي بالنسبة الى موضوع الألوان في الحاوية كانت فقط مثال / قمت بتقسيم الامر على صفحات مختلفة اخر حل وصلت له فعلا لا يوجد مشكله في عدد ملفات كبير افضل من التعقيد شكرا لك اخي الكريم
  22. اهلا اخي الكريم حقيقه لا اعلم اذا كان الذي تقصده نفس الفكرة الذي قمت بتطبيقها ولكني استطيع وضع عدد الصفحات التي احتاجها في نفس الصفحة ولكن كل صفحه تحتوي على اسم مختلف ثم عمل قائمة او مصفوفة تحتوي على اسم هذا الصفحات فقط وعرضها في pageview .builledr ولكن عيب هذا الامر ان الكود سوف يصبح طويل ولو قمت بعمل صفحات مختلفة او مستقله أيضا بيكون لدي عدد صفحات كبير وانا هذا ما احاول تجنبه حاليا انا عامل pageview عشان اقلل عدد الصفحات وطول الكود الامر ناجح ولكن مشكلتي فقط في نقل البيانات بين هذا Container
  23. اهلا بك اخي الكريم كل الشكر لك على جوابك عزيزي ولكن سوالي قليلا مختلف اعتذر على ما يبدو لم اشرح المشكلة بشكل صحيح انا ارغب بنقل البيانات من ()Container الى ()Container أخرى في نفس الصفحة في أداة Pageview
  24. استعمل pageview لعرض مجموعة من الحاويات وكل حاوية تملك بيانات مختلفة عن الأخرى سوف اضع في كل حاوية Listview.builder سوف تعرض بيانات من خلال قاعدة البيانات وسوف اعمل GestureDetector في هذا القائمة بحيث ان المستخدم لو قام بالاختيار سوف ينتقل الى الخيار الذي ضغط عليه ولكن مشكلتي هيا كيف استطيع نقل بيانات بين هذا الحاوية بحيث اخبر التطبيق اذا كان المستخدم في الحاوية رقم 1 وقام بعملية اختيار بيانات انقل لي هذا البيانات الى الحاوية رقم 2 او الحاوية الثانية وهكذا. الكود التالي هو ما اعمل عليه :وهو يحتوي على عدد 3 حاويات او Container في الوضع العادي أقوم بنقل البيانات بشكل التالي بين الصفحات : Navigator.push( context, MaterialPageRoute( builder: (context) => Pagetwo(item: item,))); ولكن هنا الامر اختلف أحاول القيام بذلك ولكن نقل البيانات بين الحاويات import 'package:flutter/material.dart'; void main() => runApp(SwapPV()); class SwapPV extends StatefulWidget { @override _SwapPVState createState() => _SwapPVState(); } class _SwapPVState extends State<SwapPV> { PageController controller = PageController(); @override Widget build(BuildContext context) { return MaterialApp(home: Scaffold( body: Stack( alignment: Alignment.center, children: [ PageView( physics: NeverScrollableScrollPhysics(), controller: controller, children: [ Column( children: [ Container( color: Colors.red, ), ], ), Container( color: Colors.amber, ), Container( color: Colors.green, ), ], ), Container( color: Colors.pink.withOpacity(.2), child: Text("OverLap Container"), ), Align(alignment: Alignment(0, .1), child: Text("Another OverLapText")), ///THis will controll the PageView ], ) )); } }
  25. حقيقه انني قمت بتجربة الماك على VMware ولكني لم يسبق لي تجربة Hackintosh لو فيه شخص قام بتجربة النوعين ارغب بمعرفة الفرق بينهم الذي وجده ؟ وما المميزات التي تفرق بينهم والسيئات ايضا وحسب تجربتك ايهم اسرع وافضل لشغل البرمجة على الاندرويد ستوديو والاكس كود ؟
×
×
  • أضف...