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

انا استلم بيانات من api هنا ف future builder حطيت الشروط بس شرط snapshot.haserror لا يتفعل بس يظهر لي صفحة بيضاء بعد ال indicator

Yousef Moustafa

السؤال

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 [];

}

  }

}










 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

عندما يظهر لك صفحة بيضاء بدلاً من رسالة الخطأ المتوقعة عند حدوث خطأ في الاستدعاء API لذلك يمكن أن يتم التعامل مع الخطأ بشكل غير صحيح. لذلك تأكد من أن الخطأ يتم التعامل معه بشكل صحيح وأنك تعيد قيمة فارغة [] كما هو موجود في كود catch الحالي ثم تحتاج إلى التحقق من الرمز الذي يتم إرجاعه من الخادم عند حدوث خطأ مثل رمز 422 ، 200 ، 500  ربما يتوجب عليك التحقق من محتوى الاستجابة لفهم كيف يتم تنسيق الخطأ من الخادم أيضا لا تنسى إذا كان هناك تأخر في استجابة الخادم، قد تظهر الصفحة البيضاء أثناء انتظار البيانات و يمكنك تجنب ذلك بعرض رسالة انتظار مؤقتة أثناء استرجاع البيانات.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...