0

I am trying to get the image URL from this feed:

<item>
<title>Tuborg Classic er ikke en pilsner</title>
<link>
https://durst.nu/2020/05/14/tuborg-classic-er-ikke-en-pilsner/
</link>
<wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">
https://durst.nu/2020/05/14/tuborg-classic-er-ikke-en-pilsner/feed/
</wfw:commentRss>
<slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments>
<media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://2.gravatar.com/avatar/b36123a06ead4213d98787e5913b6eb7?s=96&d=identicon&r=G" medium="image">
<media:title type="html">chrcph</media:title>
</media:content>
<media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=566" medium="image"/>
<description>
Som pilsner ekspert er det ok at være en pedant, ikke? Pille løs i stort og småt. Være træls. På tværs. Tæt på ulidelig. Det er vel nærmest forventeligt, når man har skrevet en grundbog om pilsner, &#8220;Den nøgne øl&#8221; &#8230; <a href="https://durst.nu/2020/05/14/tuborg-classic-er-ikke-en-pilsner/">Continue reading <span class="meta-nav">&#8594;</span></a>
</description>
<content:encoded>
<figure class="wp-block-image size-large"><img data-attachment-id="2192" data-permalink="https://durst.nu/tuborg-classic/" data-orig-file="https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg" data-orig-size="1934,3500" data-comments-opened="1" data-image-meta="{&#34;aperture&#34;:&#34;0&#34;,&#34;credit&#34;:&#34;&#34;,&#34;camera&#34;:&#34;&#34;,&#34;caption&#34;:&#34;&#34;,&#34;created_timestamp&#34;:&#34;0&#34;,&#34;copyright&#34;:&#34;&#34;,&#34;focal_length&#34;:&#34;0&#34;,&#34;iso&#34;:&#34;0&#34;,&#34;shutter_speed&#34;:&#34;0&#34;,&#34;title&#34;:&#34;&#34;,&#34;orientation&#34;:&#34;0&#34;}" data-image-title="tuborg-classic" data-image-description="" data-medium-file="https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=166" data-large-file="https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=566" src="https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=566" alt="" class="wp-image-2192" srcset="https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=566 566w, https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=1132 1132w, https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=83 83w, https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=166 166w, https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=768 768w" sizes="(max-width: 566px) 100vw, 566px" /></figure> <p>Som pilsner ekspert er det ok at være en pedant, ikke?</p> <p>Pille løs i stort og småt. Være træls. På tværs. Tæt på ulidelig.</p> <p>Det er vel nærmest forventeligt, når man har skrevet en grundbog om pilsner, &#8220;Den nøgne øl&#8221; på 380 sider.</p> <p>Tag nu goe gamle Tuborg Classic.&#160;</p> <p>En &#8220;traditionel pilsner&#8221; står der på etiketten &#8211; og med &#8220;frisk og fyldig pilsnersmag&#8221;.</p> <p>Nej, Tuborg Classic er ikke en pilsner.&#160;</p> <p>Det er nok nærmere en wienerøl. </p> <p>Wienerøl er &#8211; modsat classic-betegnelsen &#8211; en certificeret øltype. </p> <p>Jeg er med på, at der var stilforvirring blandt de ølkyndige i 1993, da Tuborg Classic blev lanceret. Fx ingen Beer Judge Certification Program, men hvis folkene fra markedsføringsafdelingen havde rådført sig med en kyndig brygmester, pilsner brygger, inden lanceringen, kom der næppe til at stå &#8216;traditionel pilsner&#8217; på Tuborg Classic.</p> <p>Hos Beer Judge Certification Program (BJCP), det højeste organ for certificering af øl, har wienerøl en selvstændig kategori, Vienna Lager (7A).&#160;</p> <p>Men måske Tuborg Classic skal placeres i en lidt anden kategori hos BJCP, for Tuborg Classic er jo industribryg og så får kategorien præfixet &#8220;international&#8221; hos BJCP.&#160;</p> <p>Så den rette kategori for Tuborg Classic er nok International Amber Lager (2B).</p> <p>Ih, sjovt at være træls.</p> <p></p>
</content:encoded>
<category>Uncategorized</category>
<category>classic</category>
<category>pilsner</category>
<category>Tuborg</category>
<pubDate>Thu, 14 May 2020 07:02:30 GMT</pubDate>
<comments>
https://durst.nu/2020/05/14/tuborg-classic-er-ikke-en-pilsner/#respond
</comments>
<guid isPermaLink="false">http://durst.nu/?p=2191</guid>
<dc:creator>chrcph</dc:creator>
<dc:date>2020-05-14T07:02:30Z</dc:date>
</item>
<item>

I am getting the title and description from the feed, but I have truble to get the image - - Below are my Flutter code. Please note that there are 2 Media content - How do I get this URL https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=566 from the feed into Flutter ?

import 'package:flutter/material.dart';
import 'package:webfeed/webfeed.dart';
import 'package:http/http.dart' as http;
import 'package:url_launcher/url_launcher.dart';
import 'package:cached_network_image/cached_network_image.dart';


class News extends StatefulWidget {
  News() : super ();
  final String title = 'Rss feed Demo';
  @override
  _NewsState createState() => _NewsState();
}

class _NewsState extends State<News> {
  //static const String FEED_URL = 'https://www.nasa.gov/rss/dyn/lg_image_of_the_day.rss';
  static const String FEED_URL = 'http://www.rssmix.com/u/11631847/rss.xml';
  RssFeed _feed;
  String _title;
  static const String loadingFeedMsg = 'Loading feed....';
  static const String feedLoadErrorMsg = 'Error loading feed';
  static const String feedOpenErrorMsg = 'Error opening Feed';
  static const String placeholderImg = 'images/no_image.png';
  GlobalKey<RefreshIndicatorState> _refreshKey;

  updateTitle(title){
    setState(() {
      _title = title;
    });
  }
  updateFeed(feed){
    setState(() {
      _feed = feed;
    });
  }

  Future<void> openFeed(String url) async {
    if(await canLaunch((url))){
      await launch(url, forceSafariVC: true, forceWebView: false,
      );
      return;

    }
    updateTitle(feedOpenErrorMsg);
  }

  load() async {
    updateTitle(loadingFeedMsg);
    loadFeed().then((result){
      if(null == result ||result.toString().isEmpty){
        updateTitle(feedLoadErrorMsg);
        return;

      }
      updateFeed(result);
      updateTitle(_feed.title);
    });
  }

  Future<RssFeed> loadFeed() async{
    try{
      final client = http.Client();
      final response = await client.get(FEED_URL);
      return RssFeed.parse(response.body);

    }catch (e){
      return null;

    }
  }

  @override
  void initState() {

    super.initState();
    _refreshKey = GlobalKey<RefreshIndicatorState>();
    updateTitle(widget.title);
    load();


  }
  title(title){
    return Text(
      title,
      style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.w500),
      maxLines: 2,
        overflow: TextOverflow.ellipsis,
    );
  }

  subtitle(subtitle){
    return Text(
      subtitle,
      style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.w200),
      maxLines: 1,
      overflow: TextOverflow.ellipsis,
    );
  }

  thumbnail(imageUrl){
    return Padding(
      padding: EdgeInsets.only(left: 15.0),
      child: CachedNetworkImage(
        placeholder: (context, url) => Image.asset(placeholderImg),
        imageUrl: imageUrl,
        height: 50,
        width: 70,
        alignment: Alignment.center,
        fit: BoxFit.fill,
      ),
    );
  }

  rightIcon(){
    return Icon(
      Icons.keyboard_arrow_right, color: Colors.grey, size: 30.0,
    );
  }

  list(){
    return ListView.builder(
      itemCount: _feed.items.length,
      itemBuilder: (BuildContext context, int index){
        final item = _feed.items[index];
        return ListTile(
         title: title(item.title),
          subtitle: subtitle(item.description),
          leading: thumbnail(item.media.content.url),
          trailing: rightIcon(),
          contentPadding: EdgeInsets.all(5.0),
          onTap: () => openFeed(item.link),


        );

      },
    );
  }

  isFeedEmpty(){
    return null == _feed || null == _feed.items;
  }

  body(){
    return isFeedEmpty() ? Center(
      child: CircularProgressIndicator(),
    )
    :RefreshIndicator(
      key: _refreshKey,
      child: list(),
      onRefresh: () => load(),
    );



  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(_title),
      ),
      body:  body(),
    );
  }
}


```
kyed
  • 61
  • 1
  • 7

1 Answers1

0

You can copy paste run full code below
You can use package https://pub.dev/packages/xml2json and parse to related Payload class , you can see class definition in full code
code snippet

http.Response response =
        await http.get("http://www.rssmix.com/u/11631847/rss.xml");
    if (response.statusCode == 200) {
      xml2json.parse(response.body);

      String jsonData = xml2json.toGData();

      Payload payload = payloadFromJson(jsonData);
      print(payload.rss.channel.item[0].mediaContent[1]["url"]);

      for (int i = 0; i < payload.rss.channel.item.length; i++) {
        var mediaContent = payload.rss.channel.item[i].mediaContent;
        if (mediaContent != null && mediaContent.length >= 2) {
          var mediaContentItem1 = payload.rss.channel.item[i].mediaContent[1];
          if (mediaContentItem1!= null && mediaContentItem1.containsKey("url")) {
            var url = mediaContentItem1["url"];
            if (url != null) {
              print(url);
            }
          }
        }
      }
    }

output

I/flutter (27743): https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=566
I/flutter (27743): https://chrcph.files.wordpress.com/2020/05/tuborg-classic.jpg?w=566
I/flutter (27743): https://ousensoel.files.wordpress.com/2020/05/img_20200506_095714_846.jpg?w=1024
I/flutter (27743): https://chrcph.files.wordpress.com/2020/04/45-days-extra-natural-octo.jpg?w=1024
I/flutter (27743): https://chrcph.files.wordpress.com/2020/04/paulanersalvator.jpg?w=300
I/flutter (27743): https://chrcph.files.wordpress.com/2020/04/pc3a5skebryg-herslev.jpg?w=640
I/flutter (27743): https://chrcph.files.wordpress.com/2020/03/gb_witbier.png?w=800
I/flutter (27743): https://2.gravatar.com/avatar/80b9081c0062489b95364a72652cd533?s=96&d=identicon&r=G
I/flutter (27743): https://2.gravatar.com/avatar/80b9081c0062489b95364a72652cd533?s=96&d=identicon&r=G
I/flutter (27743): https://ousensoel.files.wordpress.com/2020/02/img_20200103_162444_232.jpg?w=1024
I/flutter (27743): https://chrcph.files.wordpress.com/2020/02/interic3b8r-the-phil-.jpg?w=550
I/flutter (27743): https://chrcph.files.wordpress.com/2020/01/mikkeller-weird-weather.jpg?w=683
I/flutter (27743): https://chrcph.files.wordpress.com/2020/01/chai-de-lermitage-.jpg?w=1000
I/flutter (27743): https://chrcph.files.wordpress.com/2020/01/dab-frisch-vom-fass.jpg?w=474
I/flutter (27743): https://2.gravatar.com/avatar/80b9081c0062489b95364a72652cd533?s=96&d=identicon&r=G
I/flutter (27743): https://2.gravatar.com/avatar/80b9081c0062489b95364a72652cd533?s=96&d=identicon&r=G
I/flutter (27743): https://chrcph.files.wordpress.com/2019/12/foerster-udenfor.jpg?w=1000

full code

import 'package:flutter/material.dart';
import 'package:xml2json/xml2json.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;

Payload payloadFromJson(String str) => Payload.fromJson(json.decode(str));

String payloadToJson(Payload data) => json.encode(data.toJson());

class Payload {
  String version;
  String encoding;
  Rss rss;

  Payload({
    this.version,
    this.encoding,
    this.rss,
  });

  factory Payload.fromJson(Map<String, dynamic> json) => Payload(
        version: json["version"],
        encoding: json["encoding"],
        rss: Rss.fromJson(json["rss"]),
      );

  Map<String, dynamic> toJson() => {
        "version": version,
        "encoding": encoding,
        "rss": rss.toJson(),
      };
}

class Rss {
  String version;
  List<Xmln> xmlns;
  String xmlnsContent;
  String xmlnsDc;
  Channel channel;

  Rss({
    this.version,
    this.xmlns,
    this.xmlnsContent,
    this.xmlnsDc,
    this.channel,
  });

  factory Rss.fromJson(Map<String, dynamic> json) => Rss(
        version: json["version"],
        xmlns: List<Xmln>.from(json["xmlns"].map((x) => Xmln.fromJson(x))),
        xmlnsContent: json["xmlns\u0024content"],
        xmlnsDc: json["xmlns\u0024dc"],
        channel: Channel.fromJson(json["channel"]),
      );

  Map<String, dynamic> toJson() => {
        "version": version,
        "xmlns": List<dynamic>.from(xmlns.map((x) => x.toJson())),
        "xmlns\u0024content": xmlnsContent,
        "xmlns\u0024dc": xmlnsDc,
        "channel": channel.toJson(),
      };
}

class Channel {
  Description title;
  Description link;
  Description description;
  Description generator;
  List<Item> item;

  Channel({
    this.title,
    this.link,
    this.description,
    this.generator,
    this.item,
  });

  factory Channel.fromJson(Map<String, dynamic> json) => Channel(
        title: Description.fromJson(json["title"]),
        link: Description.fromJson(json["link"]),
        description: Description.fromJson(json["description"]),
        generator: Description.fromJson(json["generator"]),
        item: List<Item>.from(json["item"].map((x) => Item.fromJson(x))),
      );

  Map<String, dynamic> toJson() => {
        "title": title.toJson(),
        "link": link.toJson(),
        "description": description.toJson(),
        "generator": generator.toJson(),
        "item": List<dynamic>.from(item.map((x) => x.toJson())),
      };
}

class Description {
  String t;

  Description({
    this.t,
  });

  factory Description.fromJson(Map<String, dynamic> json) => Description(
        t: json["\u0024t"],
      );

  Map<String, dynamic> toJson() => {
        "\u0024t": t,
      };
}

class Item {
  Description title;
  Description link;
  WfwCommentRss wfwCommentRss;
  SlashComments slashComments;
  dynamic mediaContent;
  Description description;
  Description contentEncoded;
  dynamic category;
  Description pubDate;
  Description comments;
  Guid guid;
  Description dcCreator;
  Description dcDate;
  PostId postId;
  MediaThumbnail mediaThumbnail;

  Item({
    this.title,
    this.link,
    this.wfwCommentRss,
    this.slashComments,
    this.mediaContent,
    this.description,
    this.contentEncoded,
    this.category,
    this.pubDate,
    this.comments,
    this.guid,
    this.dcCreator,
    this.dcDate,
    this.postId,
    this.mediaThumbnail,
  });

  factory Item.fromJson(Map<String, dynamic> json) => Item(
        title: Description.fromJson(json["title"]),
        link: Description.fromJson(json["link"]),
        wfwCommentRss: json["wfw\u0024commentRss"] == null
            ? null
            : WfwCommentRss.fromJson(json["wfw\u0024commentRss"]),
        slashComments: json["slash\u0024comments"] == null
            ? null
            : SlashComments.fromJson(json["slash\u0024comments"]),
        mediaContent: json["media\u0024content"],
        description: Description.fromJson(json["description"]),
        contentEncoded: json["content\u0024encoded"] == null
            ? null
            : Description.fromJson(json["content\u0024encoded"]),
        category: json["category"],
        pubDate: Description.fromJson(json["pubDate"]),
        comments: json["comments"] == null
            ? null
            : Description.fromJson(json["comments"]),
        guid: Guid.fromJson(json["guid"]),
        dcCreator: Description.fromJson(json["dc\u0024creator"]),
        dcDate: Description.fromJson(json["dc\u0024date"]),
        postId:
            json["post-id"] == null ? null : PostId.fromJson(json["post-id"]),
        mediaThumbnail: json["media\u0024thumbnail"] == null
            ? null
            : MediaThumbnail.fromJson(json["media\u0024thumbnail"]),
      );

  Map<String, dynamic> toJson() => {
        "title": title.toJson(),
        "link": link.toJson(),
        "wfw\u0024commentRss":
            wfwCommentRss == null ? null : wfwCommentRss.toJson(),
        "slash\u0024comments":
            slashComments == null ? null : slashComments.toJson(),
        "media\u0024content": mediaContent,
        "description": description.toJson(),
        "content\u0024encoded":
            contentEncoded == null ? null : contentEncoded.toJson(),
        "category": category,
        "pubDate": pubDate.toJson(),
        "comments": comments == null ? null : comments.toJson(),
        "guid": guid.toJson(),
        "dc\u0024creator": dcCreator.toJson(),
        "dc\u0024date": dcDate.toJson(),
        "post-id": postId == null ? null : postId.toJson(),
        "media\u0024thumbnail":
            mediaThumbnail == null ? null : mediaThumbnail.toJson(),
      };
}

class Guid {
  String isPermaLink;
  String t;

  Guid({
    this.isPermaLink,
    this.t,
  });

  factory Guid.fromJson(Map<String, dynamic> json) => Guid(
        isPermaLink: json["isPermaLink"],
        t: json["\u0024t"],
      );

  Map<String, dynamic> toJson() => {
        "isPermaLink": isPermaLink,
        "\u0024t": t,
      };
}

class MediaContentElement {
  String url;
  Medium medium;
  List<Xmln> xmlns;
  String xmlnsMedia;
  MediaTitle mediaTitle;

  MediaContentElement({
    this.url,
    this.medium,
    this.xmlns,
    this.xmlnsMedia,
    this.mediaTitle,
  });

  factory MediaContentElement.fromJson(Map<String, dynamic> json) =>
      MediaContentElement(
        url: json["url"],
        medium: mediumValues.map[json["medium"]],
        xmlns: List<Xmln>.from(json["xmlns"].map((x) => Xmln.fromJson(x))),
        xmlnsMedia: json["xmlns\u0024media"],
        mediaTitle: json["media\u0024title"] == null
            ? null
            : MediaTitle.fromJson(json["media\u0024title"]),
      );

  Map<String, dynamic> toJson() => {
        "url": url,
        "medium": mediumValues.reverse[medium],
        "xmlns": List<dynamic>.from(xmlns.map((x) => x.toJson())),
        "xmlns\u0024media": xmlnsMedia,
        "media\u0024title": mediaTitle == null ? null : mediaTitle.toJson(),
      };
}

class MediaTitle {
  Type type;
  String t;

  MediaTitle({
    this.type,
    this.t,
  });

  factory MediaTitle.fromJson(Map<String, dynamic> json) => MediaTitle(
        type: typeValues.map[json["type"]],
        t: json["\u0024t"],
      );

  Map<String, dynamic> toJson() => {
        "type": typeValues.reverse[type],
        "\u0024t": t,
      };
}

enum Type { HTML }

final typeValues = EnumValues({"html": Type.HTML});

enum Medium { IMAGE }

final mediumValues = EnumValues({"image": Medium.IMAGE});

class Xmln {
  Xmln();

  factory Xmln.fromJson(Map<String, dynamic> json) => Xmln();

  Map<String, dynamic> toJson() => {};
}

class MediaThumbnail {
  String url;
  List<Xmln> xmlns;
  String xmlnsMedia;

  MediaThumbnail({
    this.url,
    this.xmlns,
    this.xmlnsMedia,
  });

  factory MediaThumbnail.fromJson(Map<String, dynamic> json) => MediaThumbnail(
        url: json["url"],
        xmlns: List<Xmln>.from(json["xmlns"].map((x) => Xmln.fromJson(x))),
        xmlnsMedia: json["xmlns\u0024media"],
      );

  Map<String, dynamic> toJson() => {
        "url": url,
        "xmlns": List<dynamic>.from(xmlns.map((x) => x.toJson())),
        "xmlns\u0024media": xmlnsMedia,
      };
}

class PostId {
  Xmlns xmlns;
  String t;

  PostId({
    this.xmlns,
    this.t,
  });

  factory PostId.fromJson(Map<String, dynamic> json) => PostId(
        xmlns: xmlnsValues.map[json["xmlns"]],
        t: json["\u0024t"],
      );

  Map<String, dynamic> toJson() => {
        "xmlns": xmlnsValues.reverse[xmlns],
        "\u0024t": t,
      };
}

enum Xmlns { COM_WORDPRESS_FEED_ADDITIONS_1 }

final xmlnsValues = EnumValues(
    {"com-wordpress:feed-additions:1": Xmlns.COM_WORDPRESS_FEED_ADDITIONS_1});

class SlashComments {
  List<Xmln> xmlns;
  String xmlnsSlash;
  String t;

  SlashComments({
    this.xmlns,
    this.xmlnsSlash,
    this.t,
  });

  factory SlashComments.fromJson(Map<String, dynamic> json) => SlashComments(
        xmlns: List<Xmln>.from(json["xmlns"].map((x) => Xmln.fromJson(x))),
        xmlnsSlash: json["xmlns\u0024slash"],
        t: json["\u0024t"],
      );

  Map<String, dynamic> toJson() => {
        "xmlns": List<dynamic>.from(xmlns.map((x) => x.toJson())),
        "xmlns\u0024slash": xmlnsSlash,
        "\u0024t": t,
      };
}

class WfwCommentRss {
  List<Xmln> xmlns;
  String xmlnsWfw;
  String t;

  WfwCommentRss({
    this.xmlns,
    this.xmlnsWfw,
    this.t,
  });

  factory WfwCommentRss.fromJson(Map<String, dynamic> json) => WfwCommentRss(
        xmlns: List<Xmln>.from(json["xmlns"].map((x) => Xmln.fromJson(x))),
        xmlnsWfw: json["xmlns\u0024wfw"],
        t: json["\u0024t"],
      );

  Map<String, dynamic> toJson() => {
        "xmlns": List<dynamic>.from(xmlns.map((x) => x.toJson())),
        "xmlns\u0024wfw": xmlnsWfw,
        "\u0024t": t,
      };
}

class EnumValues<T> {
  Map<String, T> map;
  Map<T, String> reverseMap;

  EnumValues(this.map);

  Map<T, String> get reverse {
    if (reverseMap == null) {
      reverseMap = map.map((k, v) => new MapEntry(v, k));
    }
    return reverseMap;
  }
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  Xml2Json xml2json = Xml2Json();

  void _incrementCounter() async {
    http.Response response =
        await http.get("http://www.rssmix.com/u/11631847/rss.xml");
    if (response.statusCode == 200) {
      xml2json.parse(response.body);

      String jsonData = xml2json.toGData();

      Payload payload = payloadFromJson(jsonData);
      print(payload.rss.channel.item[0].mediaContent[1]["url"]);

      for (int i = 0; i < payload.rss.channel.item.length; i++) {
        var mediaContent = payload.rss.channel.item[i].mediaContent;
        if (mediaContent != null && mediaContent.length >= 2) {
          var mediaContentItem1 = payload.rss.channel.item[i].mediaContent[1];
          if (mediaContentItem1!= null && mediaContentItem1.containsKey("url")) {
            var url = mediaContentItem1["url"];
            if (url != null) {
              print(url);
            }
          }
        }
      }
    }

    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}
chunhunghan
  • 51,087
  • 5
  • 102
  • 120