Flutter Flatter:Firestore中带有RadioButton的谷歌地图标记显示

Flutter Flatter:Firestore中带有RadioButton的谷歌地图标记显示,flutter,google-cloud-firestore,google-maps-flutter,Flutter,Google Cloud Firestore,Google Maps Flutter,嗨,我有一张谷歌地图,上面有firestore显示的标记,内容是: 我有一些收藏,比如酒吧、餐馆。。。我想让用户用RadioButton选择他想要显示的内容 String selectedIndex = ""; class MapPage extends StatefulWidget { @override _MapPageState createState() => _MapPageState(); } class _MapPageState ex

嗨,我有一张谷歌地图,上面有firestore显示的标记,内容是: 我有一些收藏,比如酒吧、餐馆。。。我想让用户用RadioButton选择他想要显示的内容


String selectedIndex = "";

class MapPage extends StatefulWidget {
  @override
  _MapPageState createState() => _MapPageState();

  }

class _MapPageState extends State<MapPage> {
  GoogleMapController myController;
  Map<MarkerId, Marker> markers = <MarkerId, Marker>{};

  void initMarker(specify, specifyId) async{
    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: specify['address'])
    );

    setState(() {
      markers[markerId] = marker;
    });


  }




    // -----------------------------------------Marker---------------------------

    getMarkerData() async{
      FirebaseFirestore.instance.collection('Bars').get().then((myData){
        if(myData.docs.isNotEmpty){
          for (int i = 0; i < myData.docs.length ; i++) {
            initMarker(myData.docs[i].data(), myData.docs[i].id);

          }
        }
      });

    }

    void initState(){
      getMarkerData();
      super.initState();

    }

  @override
  Widget build(BuildContext context) {

    Set<Marker> getMarker() {
      return <Marker>[
        Marker(
            markerId: MarkerId('Test'),
          position: LatLng(47.4750741,-0.5213625),
          icon: BitmapDescriptor.defaultMarker,
          infoWindow: InfoWindow(title: 'no')
        )
      ].toSet();
    }

    return Scaffold(
      body: Stack(
        children: <Widget>[
          Positioned.fill(child: GoogleMap(
            markers: Set<Marker>.of(markers.values),

            mapType: MapType.normal,
            initialCameraPosition: CameraPosition(
            target: LatLng(47.4573359,-0.589259), zoom: 10,),
            onMapCreated: (GoogleMapController controller) {
            myController = controller;
              }),
            ),

          Randomizer(), // TODO : le randomizer a programmer
          RadioButton(),
       ],

      ),

    );

  }
}

And the RadioButton side :



class RadioButton extends StatefulWidget {
  @override
  _RadioButtonState createState() => _RadioButtonState();
}

class _RadioButtonState extends State<RadioButton> {

  List<String> lst = ['Resto', 'Bars', 'encours'];


  @override
  Widget build(BuildContext context) {
    return Container(
      width: double.infinity,
      child: Row(
        mainAxisAlignment: MainAxisAlignment.spaceEvenly,


        children: <Widget>[
          customRadio(lst[0], 'Resto'), // Resto
          customRadio(lst[1], 'Bars'), // bars
          //customRadio(lst[2], ),

        ],
      ),

    );
  }

  void changeIndex(String index) {
    setState(() {
      selectedIndex = index;
      _MapPageState();
      print(index);
    });
  }


  Widget customRadio(String txt, String index) {
    return OutlineButton(
      onPressed: () => changeIndex(index),
      shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),
      borderSide: BorderSide(
          color: selectedIndex == index ? Colors.cyan : Colors.grey),
      child: Text(txt, style: TextStyle(
          color: selectedIndex == index ? Colors.cyan : Colors.grey),),

    );
  }
}





字符串selectedIndex=“”;
类MapPage扩展StatefulWidget{
@凌驾
_MapPageState createState()=>\u MapPageState();
}
类_MapPageState扩展状态{
谷歌地图控制器;
地图标记={};
void initMarker(指定,specifyId)异步{
var markerIdVal=specifiyid;
最终MarkerId MarkerId=MarkerId(markerIdVal);
最终标记=标记(
马克里德:马克里德,
位置:LatLng(指定['location'].纬度,指定['location'].经度),
infoWindow:infoWindow(标题:指定['name'],代码段:指定['address'])
);
设置状态(){
markers[markerId]=标记器;
});
}
//---------------------------------------标记---------------------------
getMarkerData()异步{
FirebaseFirestore.instance.collection('Bars').get().then((myData){
if(myData.docs.isNotEmpty){
for(int i=0;i\u RadioButtonState();
}
类_RadioButtonState扩展状态{
列表lst=['Resto','bar','encours'];
@凌驾
小部件构建(构建上下文){
返回容器(
宽度:double.infinity,
孩子:排(
mainAxisAlignment:mainAxisAlignment.space,
儿童:[
customRadio(lst[0],'Resto'),//Resto
customRadio(lst[1],'bar'),//条
//海关电台(lst[2],),,
],
),
);
}
void changeIndex(字符串索引){
设置状态(){
selectedIndex=索引;
_MapPageState();
打印(索引);
});
}
小部件customRadio(字符串txt、字符串索引){
返回框按钮(
按下:()=>changeIndex(索引),
形状:RoundedRectangleBorder(borderRadius:borderRadius.circular(10.0)),
边界边(
颜色:selectedIndex==索引?颜色。青色:颜色。灰色),
子项:文本(txt,样式:TextStyle(
颜色:selectedIndex==索引?颜色。青色:颜色。灰色),
);
}
}
我曾尝试使用selectedIndex,它可以有“Bars”和“Restaurant”的值,use在查询中,但它没有重新构造它。有人有主意吗

谢谢你抽出时间