我有一个使用数学表达式创建指标的用例-
class _MainActivityState extends State<MainActivity> {
int _selectedPage = 0;
List<Widget> pageList = List<Widget>();
@override
void initState() {
pageList.add(HomePage());
pageList.add(ChatPage());
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: IndexedStack(
index: _selectedPage,
children: pageList,
),
//Bottom Navigation Bar added
bottomNavigationBar: BottomNavigationBar(
.....
这里metricArguments是new MathExpression({
expression: `SUM([${Object.keys(metricArguments).join(", ")}])`,
usingMetrics: metricArguments,
})
,但Map<string,IMetric>
需要usingMetrics
类型。我想问一下如何将Record<string,IMetric>
转换成Map<string,Imetric>
,因为我有指标存储在地图中。
我也可以将指标插入到Record类型而不是map中,但是找不到任何方法。
答案 0 :(得分:3)
您将需要一个函数来将Map
转换为对象文字。
function convertMapToObject(metricArguments: Map<string,IMetric>): Record<string,IMetric> {
let newObject: Record<string,IMetric> = {}
for (let [key, value] of metricArguments) {
newObject[key] = value;
}
return newObject;
}
new MathExpression({
expression: `SUM([${Object.keys(metricArguments).join(", ")}])`,
usingMetrics: convertMapToObject(metricArguments),
})