在Flutter中工作,我可以像这样访问数据库的各个部分:
Streambuilder(
stream: Firestore.instance.collection('stores').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
return ListView.builder(
itemExtent: 60,
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) =>
_buildListRows(context, snapshot.data.documents[index]),
);
}
),
然后是_buildListRows小部件:
Widget _buildListRows(BuildContext context, DocumentSnapshot document) {
geoPoint = document.reference.firestore.
return Container(
height: MediaQuery.of(context).size.height * 0.7,
child: ListView(
children: <Widget>[
Row(
children: <Widget>[
Expanded(
child: Text(
'Business Name',
style: Theme
.of(context)
.textTheme
.headline,
),
),
Container(
decoration: const BoxDecoration(
color: Colors.teal,
),
padding: const EdgeInsets.all(10),
child: Text(
document['store_name'],
style: Theme
.of(context)
.textTheme
.display1,
),
),
],
),
Row(
children: <Widget>[
Expanded(
child: Text(
'Location',
style: Theme
.of(context)
.textTheme
.headline,
),
),
Container(
decoration: const BoxDecoration(
color: Colors.teal,
),
padding: const EdgeInsets.all(10),
child: Text(
document['location'].toString(),
style: Theme
.of(context)
.textTheme
.display1,
),
),
],
),
],
),
);
}
我才刚刚开始,因此寻找从数据库中按需检索数据并将其显示在应用程序中的最佳方法。我只是找不到任何地方可以解释如何从以下方法返回的GeoPoint参考中提取经度和纬度:document ['location']。toString(),
我从此输出中得到的是:
Instance of 'GeoPoint'
我也正确吗?这是从数据库中提取特定数据的最佳方法吗?感觉我的效率很低,但是找不到其他方法来实现。
答案 0 :(得分:1)
要访问longitude
和latitude
,请执行以下操作:
child: Text(
document['location'].latitude.toString(),
style: Theme
.of(context)
.textTheme
.display1,
),
由于document['location']
返回GeoPoint
的实例,因此只需调用属性latitude
即可获取值。