我想实现一个关于如何使用 Flutter 解析 Rss Feed 的简单教程,这是我的代码:
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 RSSParser extends StatefulWidget {
@override
_RSSParserState createState() => _RSSParserState();
}
class _RSSParserState extends State<RSSParser> {
final String url = "https://www.90min.com/posts.rss";
RssFeed _feed;
String _title;
static const String loadingFeedMsg = 'Loading Feed...';
static const String feedLoadErrorMsg = 'Error Loading Feed.';
static const String feedOpenErrorMsg = 'Error Opening Feed.';
Future<RssFeed> loadFeed() async{
try{
final client = http.Client();
final response = await client.get(url);
return RssFeed.parse(response.body);
}
catch(e){
}
return null;
}
updateTitle(title){
setState(() {
_title = title;
});
}
@override
void initState() {
// TODO: implement initState
super.initState();
updateTitle(widget.title);
}
updateFeed(feed){
setState(() {
_feed = feed;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(_title),
),
);
}
}
问题是我在该指令中遇到了编译错误
updateTitle(widget.title);
带有以下错误消息:
<块引用>getter 'title' 没有为类型 'RSSParser' 定义
在教程中,它工作正常!!
你知道如何解决这个问题吗? 谢谢
答案 0 :(得分:1)
这不起作用,因为 RSS 类中没有标题。
我认为您对 widget.something
的使用不是很清楚。这意味着在扩展 StatefulWidget
的类中有一个 something
参数,我需要在 stateObject 中获取该参数。
查看代码以了解。
class YellowBird extends StatefulWidget {
const YellowBird({ Key? key }) : super(key: key);
String someData = 'SomeData'; // Some data
@override
_YellowBirdState createState() => _YellowBirdState();
}
//This is the state object
class _YellowBirdState extends State<YellowBird> {
// Now that if you need some data from the above class. You use use this widget.someData to get it here
String getHere = widget.someData ;
@override
Widget build(BuildContext context) {
return Container(color: const Color(0xFFFFE306));
}
}
答案 1 :(得分:1)
您尚未为您的 RSS 小部件声明 title
。它应该看起来像这样:
class RSSParser extends StatefulWidget {
final String title;
const RSSParser({required this.title});
这应该可以解决您的错误。