Я хочу показывать модальный нижний лист, когда нажимаю на маркер на Google Map Flutter - PullRequest
0 голосов
/ 17 июня 2019
class Peta extends StatefulWidget {
    _PetaState createState() => _PetaState();}

class _PetaState extends State<Peta> {
  Completer<GoogleMapController> _controller = Completer();

  void initState() {super.initState();}
  void _onMapCreated(GoogleMapController controller) {_controller.complete(controller);}

 Widget build(BuildContext context) {
  return Scaffold(
   appBar: AppBar(title: Text("PETA"),backgroundColor: Colors.lightGreenAccent[700],)
   body: Stack(children: <Widget>[_peta(context),])
  )
 }

 Widget _peta(BuildContext context) {
  return Container(height: MediaQuery.of(context).size.height, width: MediaQuery.of(context).size.width,
   child: GoogleMap(onMapCreated: _onMapCreated, mapType: MapType.normal,
    initialCameraPosition: CameraPosition(target: LatLng(-1.265386, 116.831200), zoom: 14),
    markers: {marker1, marker2},
   )
  );
 }
}

Marker marker1 = Marker(markerId: MarkerId("TOKO 1"), position: LatLng(-1.277025, 116.829049),
 infoWindow: InfoWindow(title: "TOKO MAKMUR"),
 icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueGreen,),
 onTap: () {
  showModalBottomSheet(
   context: context, /// this line is error
   builder: (builder){return Container(......)}
  );
 }
)

это мой код. Я хочу показать некоторые детали места, отмеченного нижним листом. я не знаю, как передать контекст в него. Я уже пробовал ответить на аналогичный вопрос, но у меня тоже возникают проблемы с методом onMarkerTapped. я уже тоже использовал другой плагин карт, он работает, но качество карт плохое. пожалуйста помогите

1 Ответ

0 голосов
/ 18 июня 2019

Ваш модал Bottom Sheet должен выглядеть примерно так:

void _showModal() {
    Future<void> future = showModalBottomSheet<void>(
      context: context,
      builder: (BuildContext context) {
        return Container(
                child: Wrap(
                   children: <Widget>[
                        ListTile(
                           leading: Icon(Icons.star),
                           title: Text("Favorite"),
                        ),
                        ListTile(
                           leading: Icon(Icons.close),
                           title: Text("Cancel"),
                        ),
                  ],
            ),
        );
      },
    );
  future.then((void value) => _closeModal(value));
}

void _closeModal(void value) {

}

и затем вы можете вызвать его через жест onTap:

onTap: () {
   _showModal();
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...