Mohammed Hhhh نشر 20 مايو 2023 أرسل تقرير نشر 20 مايو 2023 (معدل) السلام عليكم لدي سؤال لم اجد له اجابه السؤال كالتالي : الحين احنا بنعرف انه ال Column widget بتتوسع على حسب المساحه المتبقيه فإذا هي شبيه لل expanded و كمان احنا بنعرف انوا اذا حطينا expanded widget بداخل singelChildScroollView widget رح يعطينا exception ف السؤال ليش لما نحط column widget بداخل singelChildScroollView ما بيعطينا exception مع انه كل منهم(expanded , column) بتتوسع على حسب المساحه المتبقيه شاهد الصوره ---> تم التعديل في 20 مايو 2023 بواسطة Mustafa Suleiman تعديل عنوان السؤال 1 اقتباس
0 Mustafa Suleiman نشر 20 مايو 2023 أرسل تقرير نشر 20 مايو 2023 عند وضع Column داخل SingleChildScrollView، بإمكان لـ Column أن يتمدد بشكل لا محدود في الاتجاه الرأسي داخل SingleChildScrollView. وبالتالي، لن يتم رمي استثناء عند تمرير المحتوى. وهناك بعض التناقض في الشروط التي يتم فيها رمي استثناء عند استخدام Expanded داخل SingleChildScrollView. في الواقع، إذا وضعت Expanded داخل SingleChildScrollView، ستحدث استثناءات لأن Expanded يحاول التمدد لاستغلال المساحة المتبقية، في حين يسمح SingleChildScrollView بالتمدد غير المحدود. ففي حالة وضع Column بداخل SingleChildScrollView، يتم تطبيق تمدد Column على العناصر الموجودة داخلها فقط، وليس على الـ SingleChildScrollView نفسه. ببساطة، SingleChildScrollView يعمل على إظهار المحتوى الذي يتجاوز المساحة المتاحة على الشاشة بواسطة التمرير، في حين يتمدد Column فقط بناءً على المحتوى الذي يحتويه. وإليك مثالًا بسيطًا يوضح استخدام Column داخل SingleChildScrollView بدون حدوث استثناء: import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Example', home: Scaffold( appBar: AppBar( title: Text('Example'), ), body: SingleChildScrollView( child: Column( children: [ Container( height: 200, // ارتفاع ثابت للمثال color: Colors.blue, ), Container( height: 200, color: Colors.green, ), Container( height: 200, color: Colors.red, ), // يمكنك إضافة المزيد من العناصر هنا ], ), ), ), ); } } تم وضع Column داخل SingleChildScrollView وتحديد ارتفاع ثابت لكل عنصر في Column، بغض النظر عن عدد العناصر، ستظهر جميعها داخل SingleChildScrollView ويمكن التمرير لعرض المحتوى الكامل. اقتباس
0 Mustafa Suleiman نشر 20 مايو 2023 أرسل تقرير نشر 20 مايو 2023 عند وضع Column widget داخل SingleChildScrollView، فإنه لا يحدث استثناء (exception) لأن SingleChildScrollView يسمح بالتمدد (expansion) غير محدود في الاتجاه الرأسي، بغض النظر عن عدد عناصر Column. SingleChildScrollView يعمل على إظهار كل عناصر القائمة بطريقة يمكن التمرير (scrollable) حتى وإن كانت أكثر من المساحة المتاحة على الشاشة. وعندما يكون لديك عنصر واحد فقط في SingleChildScrollView، ويمكن لـ Column أن يتمدد (expand) بشكل غير محدود في الاتجاه الرأسي ليتناسب مع حجم محتواه. أما بالنسبة لاستخدام Expanded داخل SingleChildScrollView، فالمشكلة تكمن في أن Expanded يحاول التمدد بنسبة معينة مقابل المساحة المتبقية، ولكن بسبب وجود SingleChildScrollView الذي يسمح بالتمدد غير المحدود، يكون هناك صراع بين الـ Expanded و SingleChildScrollView في التمدد، وهذا ما يتسبب في رمي استثناء (exception). وإذا أردت استخدام Column داخل SingleChildScrollView وتجنب الاستثناء، تستطيع استخدام واجهة ConstrainedBox لتحديد حجم ثابت لـ Column، بحيث لا يحاول التمدد بشكل غير مناسب. مثال للتوضيح: import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Example', home: Scaffold( appBar: AppBar( title: Text('Example'), ), body: SingleChildScrollView( child: ConstrainedBox( constraints: BoxConstraints(), // قيود خالية، لا تحدد أي قيود على الحجم child: Column( children: [ // عناصر القائمة هنا // يمكنك وضع قائمة طويلة هنا دون حدوث استثناء ], ), ), ), ), ); } } اقتباس
0 Mohammed Hhhh نشر 20 مايو 2023 الكاتب أرسل تقرير نشر 20 مايو 2023 (معدل) بتاريخ 1 ساعة قال Mustafa Suleiman: عند وضع Column widget داخل SingleChildScrollView، فإنه لا يحدث استثناء (exception) لأن SingleChildScrollView يسمح بالتمدد (expansion) غير محدود في الاتجاه الرأسي، بغض النظر عن عدد عناصر Column. SingleChildScrollView يعمل على إظهار كل عناصر القائمة بطريقة يمكن التمرير (scrollable) حتى وإن كانت أكثر من المساحة المتاحة على الشاشة. وعندما يكون لديك عنصر واحد فقط في SingleChildScrollView، ويمكن لـ Column أن يتمدد (expand) بشكل غير محدود في الاتجاه الرأسي ليتناسب مع حجم محتواه. أما بالنسبة لاستخدام Expanded داخل SingleChildScrollView، فالمشكلة تكمن في أن Expanded يحاول التمدد بنسبة معينة مقابل المساحة المتبقية، ولكن بسبب وجود SingleChildScrollView الذي يسمح بالتمدد غير المحدود، يكون هناك صراع بين الـ Expanded و SingleChildScrollView في التمدد، وهذا ما يتسبب في رمي استثناء (exception). وإذا أردت استخدام Column داخل SingleChildScrollView وتجنب الاستثناء، تستطيع استخدام واجهة ConstrainedBox لتحديد حجم ثابت لـ Column، بحيث لا يحاول التمدد بشكل غير مناسب. مثال للتوضيح: import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Example', home: Scaffold( appBar: AppBar( title: Text('Example'), ), body: SingleChildScrollView( child: ConstrainedBox( constraints: BoxConstraints(), // قيود خالية، لا تحدد أي قيود على الحجم child: Column( children: [ // عناصر القائمة هنا // يمكنك وضع قائمة طويلة هنا دون حدوث استثناء ], ), ), ), ), ); } } اخي ممكن توضح اكثر : انته بتقول انه ال column يتمدد بشكل لا محدود و لا يرمى exception في حال و ضعه داخل SinglScrooll.... و تحت في اخر الاجابه بتقولي كيف اتجنب ال exception هنالك تناقض ممكن توضح اكثر و بالإمثله و شكرا//// تم التعديل في 20 مايو 2023 بواسطة Mohammmed Mahmoud اقتباس
0 بلال زيادة نشر 22 مايو 2023 أرسل تقرير نشر 22 مايو 2023 التصرف الذي وصفته لا يتسبب في حدوث استثناء (exception) عند وضع Column widget داخل SingleChildScrollView widget، لأنهما يتصرفان بشكل مختلف وفقًا لميكانيكياتهما الخاصة. Column Widget: Column widget يقوم بترتيب العناصر الفرعية عموديًا (عمود واحد)، ويمكن أن يمتد ليشغل المساحة المتبقية الكاملة بالارتفاع. يعني أن عناصر Column ستتوسع لتملأ المساحة العمودية المتاحة، وإذا تجاوزت المساحة المتاحة، سيتم عرض شريط التمرير العمودي. SingleChildScrollView Widget: SingleChildScrollView widget يوفر إمكانية التمرير في اتجاه واحد (عمودي أو أفقي) لعناصره الفرعية. يعني أنه يمكنك وضع أي عدد من العناصر داخل SingleChildScrollView وسيتمكن المستخدم من التمرير لعرض المحتوى الذي تجاوز المساحة المرئية. عند وضع Column داخل SingleChildScrollView، ستحدث تداخلات في التصميم فقط إذا تم تمدد العناصر داخل Column لتزيد عن المساحة المتاحة في الاتجاه العمودي، وهذا قد يؤدي إلى تداخل بين العناصر وعدم رؤيتها بشكل صحيح. ولكن لن تحدث استثناءات، بل يمكن استخدام العنصر المتبقي للتمرير لعرض المحتوى الذي لا يتناسب مع المساحة المرئية. لحل هذه المشكلة وضمان عرض المحتوى بشكل صحيح في SingleChildScrollView، يمكنك استخدام عناصر تحكم العرض والتنسيق الأخرى مثل Expanded وFlexible وSizedBox لتحديد حجم العناصر وتناسبها مع المساحة المتاحة. اقتباس
السؤال
Mohammed Hhhh
السلام عليكم
لدي سؤال لم اجد له اجابه
السؤال كالتالي :
الحين احنا بنعرف انه ال Column widget بتتوسع على حسب المساحه المتبقيه فإذا هي شبيه لل expanded
و كمان احنا بنعرف انوا اذا حطينا expanded widget بداخل singelChildScroollView widget رح يعطينا exception
ف السؤال ليش لما نحط column widget بداخل singelChildScroollView ما بيعطينا exception مع انه كل منهم(expanded , column) بتتوسع على حسب المساحه المتبقيه
شاهد الصوره --->
تعديل عنوان السؤال
4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.