1

I've created an app which collects data from a RssFeed with the dart package 'webfeed'.

Here is my code:

Loading the data:

  ValueNotifier<List> data = ValueNotifier([])

  Future<void> load() async {
  var result = await loadFeed(url);

  if (null == result || result.toString().isEmpty) {
    return;
  }
  data.value[categoryIndex].clear();
  for (var i = 0; i < result.items.length; i++) {
     data.value[categoryIndex].add(result.items[i]);
  }
  return data.notifyListeners();
}

Future<RssFeed> loadFeed(String _url) async {
  loading.value = true;
  try {
    final client = http.Client();
    final response = await client.get(Uri.parse(_url));

    return RssFeed.parse(response.body);
  } catch (e) {
    print("error");
  } finally {
    loading.value = false;
  }
  return null;
}

Converting the data into a list:

  postTileList() {
  return ValueListenableBuilder(
      valueListenable: data,
      builder: (context, List _data, Widget child) {
        return _data.isEmpty
            ? Center(
                child: CircularProgressIndicator(),
              )
            : ListView.builder(
                ...,
                itemCount: _data[categoryIndex].length,
                itemBuilder: (BuildContext contex, int index) {
                  return PostTile(
                      _data[index].title,
                      _data[index].description,
                      _data[index].link,
                      _data[index].enclosure.url);
                });
      });
}

How can I let Flutter check if the "_data[index].enclosure.url" exists before it is passed on? From time to time I get a NoSuchMethodError because the RSS feed isn't being loaded corretly.

Leo D.
  • 73
  • 8

0 Answers0