Flutter Flatter:Firestore中带有RadioButton的谷歌地图标记显示
嗨,我有一张谷歌地图,上面有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
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在查询中,但它没有重新构造它。有人有主意吗
谢谢你抽出时间