![](/img/trans.png)
[英]when data empty come form API in dropdown Flutter Error come "type 'String' is not a subtype of type 'int' of 'index'"
[英]type 'string' is not a subtype of type 'int' of 'index' in flutter with mysql
class ItemList extends StatelessWidget {
late List list;
ItemList({super.key, required this.list});
@override
Widget build(BuildContext context) {
return ListView.builder(
// ignore: unnecessary_null_comparison
itemCount: list == null ? 0 : list.length,
itemBuilder: ((context, i) {
return ListTile(
leading: Icon(Icons.circle),
title: Text(list[i]['item_name']),
);
}),
);
}
}
我的完整代码:
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
var url = "http://10.0.2.2/my_store/php/get_data.php";
Future<List> getData() async {
final response = await http.get(Uri.parse(url));
return json.decode(response.body);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("MY STORE"),
),
body: FutureBuilder<List>(
future: getData(),
builder: (context, snapshot) {
if (snapshot.hasError) {
print(snapshot.error);
}
return snapshot.hasData
? ItemList(
list: [snapshot.data],
)
: const Center(
child: CircularProgressIndicator(),
);
}),
);
}
}
class ItemList extends StatelessWidget {
late List list;
ItemList({super.key, required this.list});
@override
Widget build(BuildContext context) {
return ListView.builder(
// ignore: unnecessary_null_comparison
itemCount: list == null ? 0 : list.length,
itemBuilder: ((context, i) {
return ListTile(
leading: Icon(Icons.circle),
title: Text(list[i]['item_name']),
);
}),
);
}
}
任何人都可以帮助我吗?
您可以尝试将字符串类型更改为 int 类型,如下所示
int val = int.tryParse(text) ?? 0;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.