Yousef Moustafa نشر 6 سبتمبر 2023 أرسل تقرير نشر 6 سبتمبر 2023 class NewsListViewBuilder extends StatefulWidget { const NewsListViewBuilder({ super.key, required this.category, }); final String category; @override State<NewsListViewBuilder> createState() => _NewsListViewBuilderState(); } class _NewsListViewBuilderState extends State<NewsListViewBuilder> { var data; @override void initState() { data = NewsService(Dio()).getTopHeadlines(category: widget.category); super.initState(); } @override Widget build(BuildContext context) { return FutureBuilder<List<ArticleModel>>( future: data, builder: (context, snapshot) { if (snapshot.hasData) { return NewsListView( results: snapshot.data!, ); } else if (snapshot.hasError) { return const SliverToBoxAdapter( child: Text('Oops Was An Error Pls ...... Try Later ..... ')); } else { return const SliverToBoxAdapter( child: Center( child: CircularProgressIndicator( backgroundColor: Colors.white, color: Colors.orange, ))); } }); } } وهذه صفحة البيانات اللي استلمها import 'package:__news/models/article_model.dart'; import 'package:dio/dio.dart'; class NewsService { final Dio dio; NewsService(this.dio); //entertainment Future<List<ArticleModel>> getTopHeadlines ({required String category}) async { try { var response = await dio.get( 'https://newsdata.io/api/1/news?country=eg&apikey=pub_28251d32085b71e2ec486b53a77e25ee953ba&category=$category'); Map<String, dynamic> jsonData = response.data; List<dynamic> results = jsonData['results']; List<ArticleModel> resultsList = []; for (var result in results) { ArticleModel articleModel = ArticleModel( image: result['image_url'], title: result['title'], subTitle: result['description']); resultsList.add(articleModel); } return resultsList; } catch (e) { return []; } } } 1 اقتباس
0 بلال زيادة نشر 6 سبتمبر 2023 أرسل تقرير نشر 6 سبتمبر 2023 عندما يظهر لك صفحة بيضاء بدلاً من رسالة الخطأ المتوقعة عند حدوث خطأ في الاستدعاء API لذلك يمكن أن يتم التعامل مع الخطأ بشكل غير صحيح. لذلك تأكد من أن الخطأ يتم التعامل معه بشكل صحيح وأنك تعيد قيمة فارغة [] كما هو موجود في كود catch الحالي ثم تحتاج إلى التحقق من الرمز الذي يتم إرجاعه من الخادم عند حدوث خطأ مثل رمز 422 ، 200 ، 500 ربما يتوجب عليك التحقق من محتوى الاستجابة لفهم كيف يتم تنسيق الخطأ من الخادم أيضا لا تنسى إذا كان هناك تأخر في استجابة الخادم، قد تظهر الصفحة البيضاء أثناء انتظار البيانات و يمكنك تجنب ذلك بعرض رسالة انتظار مؤقتة أثناء استرجاع البيانات. اقتباس
السؤال
Yousef Moustafa
}
وهذه صفحة البيانات اللي استلمها
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.