【发布时间】:2021-07-09 08:47:08
【问题描述】:
我创建了用户可以加载 csv 文件的应用程序,并且我希望将 csv 数据放入地图中,以便我可以制作删除功能或其他任何东西....有人可以帮助我,因为我一直在寻找它,它显示了如何转换 csv使用 loadasset 包,我想从手机存储中挑选文件
示例:convert data from a csv to a dynamic List (Flutter)
I/flutter ( 4028): [[No, Name, Code], [1, Ali, A123], [2, Abu, B456], [3, Amir, C789], [4, Safe, D098], [5, Alif, E765 ]]
这是我的代码
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("CSV DATA"),
backgroundColor: Colors.redAccent[400],
),
body: Container(
child: SingleChildScrollView(
child: Column(children: <Widget>[
FutureBuilder(
future: loadingCsvData(path),
builder: (context, AsyncSnapshot<List<dynamic>> snapshot) {
print(snapshot.data.toString());
return snapshot.hasData
? ListView(
scrollDirection: Axis.vertical,
shrinkWrap: true,
children: snapshot.data.map((data) {
return Visibility(
visible: visibilityController,
child: //Your card
Card(
child: GestureDetector(
onTap: () {
withInputField(context);
controller.text = data[1];
_controller.text = data[2];
setState(() {});
},
child: ListTile(
title: Text(
data[1].toString(),
style: TextStyle(
fontWeight: FontWeight.bold),
),
subtitle: Text(data[2].toString()),
isThreeLine: true,
trailing: IconButton(
icon: Icon(Icons.delete),
onPressed: () {},
),
),
),
));
}).toList(),
)
: Center(
child: CircularProgressIndicator(),
);
},
),
]),
)),
这是我的文件选择器功能
Future<List<List<dynamic>>> loadingCsvData(String path) async {
final csvFile = new File(path).openRead();
return await csvFile
.transform(utf8.decoder)
.transform(
CsvToListConverter(),
)
.toList();
}
编辑
我的获取数据
FutureBuilder(
future: loadingCsvData(path),
builder: (context,
AsyncSnapshot<Map<int, Map<String, dynamic>>> snapshot) {
print(snapshot.data.toString());
return snapshot.hasData
? ListView(
scrollDirection: Axis.vertical,
shrinkWrap: true,
children: [
Card(
child: ListTile(
title: Text(userList.toString()),
),
)
],
)
: Center(
child: CircularProgressIndicator(),
);
},
),
这样做对吗
【问题讨论】: