جارٍ تحميل الدرس...
في نافذة الطباعة اختر «حفظ كملف PDF» كوجهة.
نظم التشغيل 2 - المعمل 7
القوائم الكسولة، وتصحيح الأخطاء بنقاط التوقف، واستهلاك واجهات REST من Flutter
itemCount مرتبطا دائما بطول القائمة الفعلي، لا برقم مرمز ثابتitemCount يطلق خطأ RangeError - وهو انهيار الفهرس خارج النطاق الكلاسيكيListView.builder(
itemCount: courses.length,
itemBuilder: (context, index) => CourseCard(course: courses[index]),
)StatelessWidget خاص به بدلا من بنائه مضمناRun أولا - لا تخمنstack trace) كامل| نص الخطأ | السبب المحتمل |
|---|---|
The method was called on null | متغير قيمته null قبل استدعاء طريقة أو getter عليه |
RangeError: Invalid value ... index | itemCount أكبر من طول القائمة |
type 'Null' is not a subtype of type 'String' | حقل يفترض ألا يكون فارغا وصل بقيمة null من JSON |
Debug، لا زر Run العاديVariables| الزر | الإجراء |
|---|---|
| Resume (▶) | استمر حتى نقطة التوقف التالية |
| Step Over (→) | نفذ السطر الحالي وانتقل للسطر التالي |
| Step Into (↓) | ادخل داخل الطريقة المستدعاة في هذا السطر |
| Step Out (↑) | أنه الطريقة الحالية وعد إلى المستدعي |
Find Usages لتحديد مكان إسناد القيمة، ثم اضبط نقطة توقف هناك أيضاJSON، فالخلل في مصدر البيانات لا في كود DartApplication Programming Interface) - تتيح لبرنامج التحدث مع برنامج آخر برمجياالعميل
تطبيق، متصفح
الخادم
HTTPS تشفيرا فوق HTTP بحيث تبقى حركة المرور المعترضة غير قابلة للقراءةFlutter هذه هي حزمة httphttp إلى pubspec.yamlflutter pub getfinal response = await http.get(Uri.parse('https://dummyjson.com/posts'));
if (response.statusCode == 200) {
final decoded = json.decode(response.body) as Map<String, dynamic>;
}factory constructor) باسم fromJsonJSON خام إلى كائن Dart محدد النوعfactory PostModel.fromJson(Map<String, dynamic> json) {
return PostModel(
id: json['id'] as int,
title: json['title'] as String,
);
}تحميل
فتح الشاشة
نجاح
خطأ
initState، وليس أبدا من داخل build@override
void initState() {
super.initState();
_loadPosts();
}ListView.builder بشكل كسول؛ اربط itemCount دائما بطول القائمة الفعليVariables لتتبع القيم الفارغة حتى سببها الجذريHTTPhttp مع باني مصنعي fromJson هي الطريقة القياسية لجلب وتحليل بيانات REST في FlutterinitStateMahmoud Abas|المعمل 07: ListView.builder، تصحيح الأخطاء، وخدمات الويب وواجهات API