#flutter #dart #google-cloud-firestore #builder
#flutter #dart #google-облако-firestore #Конструктор
Вопрос:
Я попытался создать приложение, которое показывает пользователю некоторые места на картах Google. Данные для мест (местоположение, название) приложение должно брать из firestore. Приложение уже может отображать создателя на картах Google, но мне также нужны некоторые детали в нижней части приложения в анимированном конструкторе, но это не работает. Проблема в том, что я не могу получить название места с specify['name']
помощью моей _restaurantList
функции, но в функции initMarker это работает. Я думаю, что это должно быть как-то связано с _restaurantList(specify)
возвратом и возвратом _restaurantList(index)
, но я не знаю, в чем ошибка. Я также попытался использовать specify вместо index в _restaurantList(index)
, но затем я получил сообщение об ошибке. Но я думаю, что я должен использовать _restaurantList(specify)
для specify['name']
последующего использования.
Кто-нибудь знает, в чем моя ошибка?
Это мой код:
void initMarker(specify, specifyId) async {
// await Firebase.initializeApp();
var markerIdVal = specifyId;
final MarkerId markerId = MarkerId(markerIdVal);
final Marker marker = Marker(
markerId: markerId,
position:
LatLng(specify['location'].latitude, specify['location'].longitude),
infoWindow: InfoWindow(title: specify['name'], snippet: 'Shop'),
);
print(specify['location'].latitude);
nameTest = specify['name'];
setState(() {
markers[markerId] = marker;
print(markerId.toString() '__________________________');
});
}
getMarkerData() async {
Firestore.instance.collection('seller').getDocuments().then((myMockDoc) {
if (myMockDoc.documents.isNotEmpty) {
for (int i = 0; i < myMockDoc.documents.length; i ) {
length = myMockDoc.documents.length;
print(length);
initMarker(
myMockDoc.documents[i].data(), myMockDoc.documents[i].documentID);
}
}
});
}
_restaurantList(specify) {
return AnimatedBuilder(
animation: _pageController,
builder: (BuildContext context, Widget widget) {
double value = 1;
if (_pageController.position.haveDimensions) {
//value = _pageController.page - index;
value = (1 - (value.abs() * 0.3) 0.06).clamp(0.0, 1.0);
}
return Center(
child: SizedBox(
height: Curves.easeInOut.transform(value) * 175.0,
width: Curves.easeInOut.transform(value) * 350.0,
child: widget,
),
);
},
child: InkWell(
onTap: () {
null;
},
child: Stack(
children: [
Center(
child: Container(
margin: EdgeInsets.symmetric(
horizontal: 10.0,
vertical: 20.0,
),
height: 125.0,
width: 275.0,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
boxShadow: [
BoxShadow(
color: Colors.black54,
offset: Offset(0.0, 4.0),
blurRadius: 10.0,
),
]),
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: Colors.white),
child: Text(
specify['name'],
),
),
),
)
],
),
),
);
}
И это в каркасе:
Positioned(
bottom: 20.0,
child: Container(
height: 200.0,
width: MediaQuery.of(context).size.width,
child: PageView.builder(
controller: _pageController,
itemCount: length,
itemBuilder: (BuildContext context, int index) {
return _restaurantList(index);
},
),
),
)
Комментарии:
1. Пожалуйста, не говорите нам, чего не делает ваше приложение, вместо этого покажите нам, каков фактический результат. Мне непонятно, можете ли вы успешно извлекать свои данные из Firebsae (поскольку вы уже получаете местоположение, я думаю, что у вас нет никаких проблем с выборкой данных из Firebase) или если у вас просто возникли проблемы с созданием анимированного конструктора, пробовали ли вы использовать некоторые фиктивные / жестко закодированные данныеи это сработало?
2. @Chris32 да, это работало жестко, и я получаю данные из firestore, но я не могу отобразить данные в анимированном конструкторе.
3. Пожалуйста, посмотрите следующее видео , которое может быть вам полезно.