如何解决“无法将参数类型'String'分配给参数类型'int'"-颤振 [英] How can I resolve "The argument type 'String' can't be assigned to the parameter type 'int' " - Flutter
本文介绍了如何解决“无法将参数类型'String'分配给参数类型'int'"-颤振的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试通过Flutter SDK使用HTTP GET在线获取数据.我正在尝试使用此代码 https://github.com/RaglandCodes/Flutter-basic-API/blob/master/lib/main.dart ,但它显示的数据类型为
I'm trying to fetch data Online Using HTTP GET with Flutter SDK. I'm trying with this code https://github.com/RaglandCodes/Flutter-basic-API/blob/master/lib/main.dart but it is showing an error about data type that's
不能将参数类型'String'分配给参数类型'int'
这里是错误部分
new Card(
child: new Container(
child: new Text(data[index]['name']), //error red underlying with 'name'
padding: EdgeInsets.all(20),
),
这是我的main.dart
Here's my main.dart
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
import 'dart:async';
void main() {
runApp(new MaterialApp(home: new HomePage(),));
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String url="https://swapi.co/api/people/";
List<String> data;
/*onCreate*/
@override
void initState() {
// TODO: implement initState
super.initState();
getJSONData(); //method
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(
title: Text("my JSON app")
),
body: new ListView.builder(
// itemCount: 1,
//itemCount: data==null ? 0 :data.length ,
itemCount: data == null ? 0 : data.length,
itemBuilder: (BuildContext context, int index){
return new Container(
child: new Center(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new Card(
child: new Container(
child: new Text(data[index]['name']),
padding: EdgeInsets.all(20),
),
)
],
),
),
);
},
),
);
}
/*method*/ //RT is Future<String>
Future<String> getJSONData() async{
var response =await http.get(
Uri.encodeFull(url),
headers: {"Accept": "application/json"}
);
print(response.body);
debugPrint(response.body);
setState(() {
var convertDataToJson= json.decode(response.body);
data=convertDataToJson['results'];
});
return "Success";
}
}
推荐答案
您必须将 data
变量设置为 List
类型.
You have to set data
variable to List
type.
应该可以:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
import 'dart:async';
void main() {
runApp(new MaterialApp(
home: new HomePage(),
));
}
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
String url = "https://swapi.co/api/people/";
List data;
/*onCreate*/
@override
void initState() {
// TODO: implement initState
super.initState();
getJSONData(); //method
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(title: Text("my JSON app")),
body: new ListView.builder(
// itemCount: 1,
//itemCount: data==null ? 0 :data.length ,
itemCount: data == null ? 0 : data.length,
itemBuilder: (BuildContext context, int index) {
return new Container(
child: new Center(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
new Card(
child: new Container(
child: new Text(data[index]['name'] ?? ''),
padding: EdgeInsets.all(20),
),
)
],
),
),
);
},
),
);
}
/*method*/ //RT is Future<String>
Future<String> getJSONData() async {
var response = await http
.get(Uri.encodeFull(url), headers: {"Accept": "application/json"});
print(response.body);
debugPrint(response.body);
setState(() {
var convertDataToJson = json.decode(response.body);
data = convertDataToJson['results'];
});
return "Success";
}
}
这篇关于如何解决“无法将参数类型'String'分配给参数类型'int'"-颤振的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文