【发布时间】:2021-05-15 09:55:49
【问题描述】:
我正在尝试在我的 Flutter 应用中集成一个 API,该 API 将不断向用户更新最新的技术新闻。我从 newsapi.org 获取 API,并将其转换为 JSON 对象,存储它并尝试显示它的特定元素。例如,我的 API 有一个名为文章的列表,其中包含各种元素。其中我只想显示“标题”元素,这是我无法做到的。颤振给我一个异常 - 未处理的异常:类型'_InternalLinkedHashMap
import 'dart:convert';
import 'dart:ffi';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:hexcolor/hexcolor.dart';
import 'package:http/http.dart';
import 'package:the_laptop_hub_3/app_screens/login.dart';
import 'addSuggestions.dart';
import 'home.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:http/http.dart' as http;
class UpdatesScreen extends StatefulWidget{
@override
_UpdatesScreenState createState() => _UpdatesScreenState();
}
class _UpdatesScreenState extends State<UpdatesScreen> {
List<dynamic>updatesList = List();
// List listResponse;
// String stringResponse;
// Map mapResponse;
var _currentIndex = 0;
final tabs = [
Container(child:Home()),
Container(child:UpdatesScreen())
];
initState() {
fetchData();
super.initState();
}
Future fetchData()async{
String url = 'https://newsapi.org/v2/everything?domains=pcmag.com&sortBy=publishedAt&apiKey=b8010d33c3224b96b552b75eb026e1ca';
Response response = await get(url);
var responseBody = response.body;
Map list = json.decode(responseBody);
setState(() {
updatesList = list['articles'][2];
});
print(updatesList.toString());
return updatesList;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
automaticallyImplyLeading: false,
backgroundColor: Colors.teal,
title: Text(
"UPDATES SCREEN",
style: TextStyle(
),
),
actions: <Widget>[
IconButton(icon: Icon(Icons.logout),
onPressed: (){
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => Login(),
));
}
)
],
),
body: ListView.builder(
//itemCount: updatesList.length,
itemBuilder: (context, index){
return Container(
decoration: BoxDecoration(
color: HexColor('#cc99cc')
),
child: Card(
color: HexColor('#ffffff'),
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 3.0),
child: ListTile(
onTap: (){},
title: Text(
'some random text',
style: TextStyle(
fontSize: 25
)
),
leading: CircleAvatar(
backgroundImage: AssetImage('images/laptopimage_1.jpg'),
),
)
),
),
);
},
),
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.shifting,
currentIndex: _currentIndex,
items:[
BottomNavigationBarItem(
icon: Icon(Icons.laptop),
title: Text("Suggestions"),
backgroundColor: Colors.black45
),
BottomNavigationBarItem(
icon: Icon(Icons.update),
title: Text("Updates"),
backgroundColor: Colors.black45
),
],
onTap: (index){
setState(() {
_currentIndex = index;
});
},
),
floatingActionButton: FloatingActionButton(
backgroundColor: Colors.transparent,
child: Icon(Icons.add, size: 50.0),
hoverElevation: 15.0,
foregroundColor: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(30.0))
),
onPressed: (){
navigateToAddSuggestions(context);
},
),
);
}
void navigateToAddSuggestions(BuildContext context){
Navigator.push(
context,
MaterialPageRoute(
builder: (context)=> AddSuggestions(),
)
);
}
}
【问题讨论】:
标签: flutter