Flutter 当我在flatter中从json获取数据时,硬编码标记正在显示,但不显示标记

Flutter 当我在flatter中从json获取数据时,硬编码标记正在显示,但不显示标记,flutter,google-maps,dart,maps,Flutter,Google Maps,Dart,Maps,我正在使用谷歌地图在谷歌地图上显示标记。当我输入硬编码的数据时,它会显示标记,但当我将JSON数据传递给标记时,它不会显示。我比较了两者,没有区别,都是一系列的标记。谁能告诉我我做错了什么? 这是我的密码 import 'dart:async'; import 'dart:convert'; import 'package:CityKey/providers/businesses.dart'; import 'package:flutter/material.dart'; import 'pa

我正在使用谷歌地图在谷歌地图上显示标记。当我输入硬编码的数据时,它会显示标记,但当我将JSON数据传递给标记时,它不会显示。我比较了两者,没有区别,都是一系列的标记。谁能告诉我我做错了什么? 这是我的密码

import 'dart:async';
import 'dart:convert';

import 'package:CityKey/providers/businesses.dart';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:provider/provider.dart';

class MapsScreen extends StatefulWidget {
  static const routeName = '/maps-screen';

  @override
  _MapsScreenState createState() => _MapsScreenState();
}

class _MapsScreenState extends State<MapsScreen> {
  Completer<GoogleMapController> _controller = Completer();
  Set<Marker> markers = {};

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    final businesses = Provider.of<Businesses>(context, listen: false);
    final jsonBusiness = json.encode(businesses.business.toList());
    List<Marker> list = [
      Marker(
        markerId: MarkerId('Marker1'),
        position: LatLng(32.195476, 74.2023563),
        infoWindow: InfoWindow(title: 'Business 1'),
        icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueRed),
      ),
      Marker(
        markerId: MarkerId('Marker2'),
        position: LatLng(32.162969, 74.193625),
        infoWindow: InfoWindow(title: 'Business 2'),
        icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue),
      ),
      Marker(
        markerId: MarkerId('Marker3'),
        position: LatLng(32.139505, 74.209312),
        infoWindow: InfoWindow(title: 'Business 2'),
        icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueRed),
      ),
    ];
    print('List of markers $list');
    // setState(() {
    //   markers.addAll(list);
    // });
    // print('list of markers $markers');
    final List jsonList = json.decode(jsonBusiness);

    final List listofLatLong = jsonList
        .map(
          (e) => Map.fromEntries([
            MapEntry(
              'business_address_longitude',
              e['business_address_longitude'],
            ),
            MapEntry(
              'business_address_latitude',
              e['business_address_latitude'],
            ),
            MapEntry(
              'business_title',
              e['business_title'],
            ),
            MapEntry(
              'business_id',
              e['business_id'],
            ),
          ]),
        )
        .toList();

    final title = listofLatLong
        .map((e) => Marker(
              markerId: MarkerId('Marker${e['business_id']}'),
              position: LatLng(
                double.parse(e['business_address_latitude']),
                double.parse(e['business_address_latitude']),
              ),
              infoWindow: InfoWindow(
                title: e['business_title'],
              ),
              icon: BitmapDescriptor.defaultMarkerWithHue(
                  BitmapDescriptor.hueBlue),
            ))
        .toList();
    print('List of markers my $title');
    setState(() {
      markers.addAll(title);
    });
    // print(markers);
    // print('This is the business ');
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        title: Text('Maps'),
      ),
      body: GoogleMap(
        markers: Set<Marker>.of(markers),
        onMapCreated: (GoogleMapController controller) {
          _controller.complete(controller);
        },
        initialCameraPosition: CameraPosition(
          target: LatLng(32.1749132, 74.1779387),
          zoom: 11.0,
        ),
      ),
    );
  }
}

导入'dart:async';
导入“dart:convert”;
导入“包:CityKey/providers/businesss.dart”;
进口“包装:颤振/材料.省道”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
导入“包:provider/provider.dart”;
类MapsScreen扩展StatefulWidget{
静态常量routeName='/maps screen';
@凌驾
_MapsScreenState createState()=>\u MapsScreenState();
}
类_MapsScreenState扩展状态{
Completer _controller=Completer();
设置标记={};
@凌驾
void initState(){
super.initState();
}
@凌驾
小部件构建(构建上下文){
最终业务=Provider.of(上下文,listen:false);
final jsonBusiness=json.encode(business.business.toList());
列表=[
标记(
markerId:markerId('Marker1'),
位置:LatLng(32.195476,74.2023563),
infoWindow:infoWindow(标题:“业务1”),
图标:BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueRed),
),
标记(
markerId:markerId('Marker2'),
位置:LatLng(32.162969,74.193625),
infoWindow:infoWindow(标题:“业务2”),
图标:BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue),
),
标记(
markerId:markerId('Marker3'),
位置:LatLng(32.139505,74.209312),
infoWindow:infoWindow(标题:“业务2”),
图标:BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueRed),
),
];
打印(“标记列表$List”);
//设置状态(){
//markers.addAll(列表);
// });
//打印(“标记列表$markers”);
最终列表jsonList=json.decode(jsonBusiness);
最终列表listofLatLong=jsonList
.地图(
(e) =>Map.fromEntries([
地图条目(
“业务地址经度”,
e[“业务地址经度”],
),
地图条目(
“业务地址纬度”,
e[“业务地址纬度”],
),
地图条目(
“企业名称”,
e[“企业名称”],
),
地图条目(
“业务id”,
e['business_id'],
),
]),
)
.toList();
最终标题=列表长度
.map((e)=>标记(
markerId:markerId('Marker${e['business_id']}'),
职位:LatLng(
double.parse(e['business\u address\u latitude']),
double.parse(e['business\u address\u latitude']),
),
信息窗口:信息窗口(
标题:e['business_title'],
),
图标:BitmapDescriptor.defaultMarkerWithHue(
BitmapDescriptor.hueBlue),
))
.toList();
打印(“标记列表我的$title”);
设置状态(){
markers.addAll(标题);
});
//印刷品(标记);
//打印(“这就是业务”);
返回脚手架(
appBar:appBar(
标题:对,
标题:文本(“地图”),
),
正文:谷歌地图(
标记:一组(标记),
onMapCreated:(谷歌地图控制器){
_控制器。完成(控制器);
},
initialCameraPosition:CameraPosition(
目标:拉丁美洲(32.1749132,74.1779387),
缩放:11.0,
),
),
);
}
}

发生这种情况的原因是,我正在使用提供程序包获取我存储在var中的值,所提供的值在生成上下文中输入时正在更改。我所做的一切都存储在final中,然后将参数传递给map以解决我的问题。

是否有stacktrace或错误日志?您还应该从这里删除
setState
setState((){markers.addAll(title);})只需使用:
markers.addAll(title)在构建方法中不需要setState hey@yusufpats发生这种情况是因为我正在使用提供程序包获取我存储在var中的值,所提供的值在构建上下文中输入时正在更改。我所做的一切都存储在final中,然后将参数传递给map,以解决我的问题。谢谢你的帮助,苏瑞迟了回复。祝你有美好的一天。