如何将数据库键映射到字符串并在UI屏幕上显示分配给每个键的文本?



在firebase数据库中,我将密钥作为all、promotions等传递。但在UI上,我想显示";显示所有通知";而不仅仅是";所有";。在这里我要显示->如果key=all,则要显示的文本为"all";显示所有警报";。

void alerts() async {
await _ref.child(widget.id).child("alerts").update({
'all': true,
'Promotions': true,
'milestone': true,
'email': true,
'SMS': true,
}).then((_) {
print('Updated data node');
});
}
  1. 您可以使用.one方法从数据库中获取数据,然后从结果中循环Map并获取密钥
  2. 然后,您可以在要显示在UI中的字符串中插入键

下面是一个例子:

class HomeScreen extends StatefulWidget {
final String id;
const HomeScreen({Key key, @required this.id}) : super(key: key);
@override
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final DatabaseReference _ref = FirebaseDatabase.instance.reference();
Map data;
@override
void initState() {
super.initState();
_ref.child(widget.id).child('alerts').once().then((DataSnapshot snapshotData) {
setState(() {
data = snapshotData.value;
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: data == null
? Center(
child: CircularProgressIndicator(),
)
: Column(
children: data.entries
.map((mapEntry) => Text('Show ${mapEntry.key} notifications'))
.toList(),
),
);
}
}

相关内容

最新更新