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.