Работая во 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'
Кроме того, я делаю это правильно? Это лучший способ извлечь данные c из базы данных? Такое чувство, что я делаю это очень неэффективно, но не могу найти другой способ сделать это.