【发布时间】:2021-04-13 21:31:20
【问题描述】:
我是 Flutter 的新手,我关注了 StackOverflow 上关于从 json 映射中检索数据的另一篇文章。它有效,但现在我只想从地图中访问我需要的数据。我也无法从地图中删除多余的数据,因为我需要相同的地图用于应用程序的另一部分。
这就是代码的样子。
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CupertinoApp(
localizationsDelegates: <LocalizationsDelegate<dynamic>>[
DefaultMaterialLocalizations.delegate,
DefaultWidgetsLocalizations.delegate,
DefaultCupertinoLocalizations.delegate,
],
theme: CupertinoThemeData(
primaryColor: Color(0xffffffff),
),
home: TransactionHistoryScreen(),
);
}
}
class TransactionHistoryScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
child: Scaffold(body: Container(child: MakeList(),),),
);
}
}
class MakeList extends StatelessWidget {
final List<Map<String, String>> json = [
{"branch": "B1", "xyz": "0", "ABC": "2", "MN": "2"},
{"branch": "B2", "xyz": "0", "ABC": "0", "MN": "0"},
{"branch": "B3", "xyz": "1", "ABC": "1", "MN": "42"},
{"branch": "B4", "xyz": "0", "ABC": "5", "MN": "69"},
];
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: json.length,
itemBuilder: (BuildContext context, int index) {
return ListTileClass(jsonObject: json[index]);
},
);
}
}
class ListTileClass extends StatefulWidget {
final Map<String, String> jsonObject;
ListTileClass({this.jsonObject});
@override
_ListTileClassState createState() => _ListTileClassState();
}
class _ListTileClassState extends State<ListTileClass> {
@override
Widget build(BuildContext context) {
return ListTile(
title: Container(
child: Row(
children: makeWidgetChildren(widget.jsonObject),
),
),
);
}
List<Widget> makeWidgetChildren(jsonObject) {
List<Widget> children = [];
jsonObject.keys.forEach(
(key) => {
children.add(
Padding(
child: Text('${jsonObject[key]}'), padding: EdgeInsets.all(8.0)),
),
},
);
return children;
}
}
使用此代码,我可以打印地图每个键的值。如何访问特定密钥?例如,如何仅打印“分支”和“xyz”值?
【问题讨论】:
-
我已经从标签中删除了 android studio,因为你的问题集中在颤振和(特别是)飞镖,我认为你使用的 IDE 在这里没有什么不同