请指导我如何解决这个错误。
下面是日志的一部分
引发了以下_CastError构建MainScreen(脏、依赖关系:_InheritedProviderScope、state:_MainScreenState#8d426):类型'String‘不是类型类型“Address”在类型强制转换中的子类型
以下是类和代码:
class Address {
String placeFormattedAddress;
String placeName;
String placeId;
double latitude;
double longitude;
Address({
this.placeFormattedAddress="Google Building 40, 1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
this.placeName="Google Building 40",
this.placeId="ChIJj38IfwK6j4ARNcyPDnEGa9g",
this.latitude=37.4237151802915,
this.longitude= -122.0825955197085
});
}
import 'package:flutter/cupertino.dart';
import 'package:rider_app_kotlin/Models/address.dart';
class AppData extends ChangeNotifier {
late Address pickUpLocation;
void updatePickUpLocationAddress(Address pickUpAddress){
pickUpLocation = pickUpAddress;
notifyListeners();
}
}我不确定这是否与声音无效安全有关。请帮帮忙。
下面是与updatePickupLocationAddress相关的代码;
import 'package:provider/provider.dart';
import 'package:rider_app_kotlin/Assistants/request_assistant.dart';
import 'package:rider_app_kotlin/DataHandler/app_data.dart';
import 'package:rider_app_kotlin/Models/address.dart';
import 'package:rider_app_kotlin/config_maps.dart';
class Assistant {
static Future<String> searchCoordinateAddress(Position position, context) async {
String placeAddress = "";
String url = "https://maps.googleapis.com/maps/api/geocode/json?latlng="
"${position.latitude},${position.longitude}&key=$mapKey";
var response = await RequestAssistant.getRequest(url);
if(response != "Failed."){
placeAddress = response["results"][0]["formatted_address"];
Address userPickUpAddress = new Address();
userPickUpAddress.latitude = position.latitude;
userPickUpAddress.longitude = position.longitude;
userPickUpAddress.placeName = placeAddress;
Provider.of<AppData>(context, listen: false)
.updatePickUpLocationAddress(userPickUpAddress);
}
return placeAddress;
}
}附加信息: AppData类上的数据应该使用下面代码中的'provider‘包显示在MainScreen类中;
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
Provider.of<AppData>(context).pickUpLocation != null
? Provider.of<AppData>(context).pickUpLocation.placeName
:"Add Home",
),
SizedBox(height: 4,),
Text("Home address", style:TextStyle(color: Colors.grey, fontSize: 15),)
],
),编辑:25JAN 2022;问题仍然出现在应用程序的开始。
在排除故障时,我尝试删除'Provider.of(context).pickUpLocation != null ? Provider.of(context).pickUpLocation.placeName :‘在mainscreen中,只保留这个“address”,然后成功地重新加载应用程序(重新加载),没有错误声明(在主题中),当然这个地址没有显示在主屏幕中。
我再次尝试放置Provider.of(上下文).pickUpLocation != null?Provider.of(上下文).pickUpLocation.placeName:"Add“,该应用程序成功地重新加载(Home),没有出错,地址显示在mainsreen中--如预期的那样。
我试着从一开始就启动这个应用程序(不是热门版本),然后我再次遇到了错误。请建议这里要检查什么。谢谢。
发布于 2021-12-26 04:29:38
用这个:
class Address {
var placeFormattedAddress;
var placeName;
var placeId;
var latitude;
var longitude;
Address({
this.placeFormattedAddress="Google Building 40, 1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
this.placeName="Google Building 40",
this.placeId="ChIJj38IfwK6j4ARNcyPDnEGa9g",
this.latitude=37.4237151802915,
this.longitude= -122.0825955197085
});
}
import 'package:flutter/cupertino.dart';
import 'package:rider_app_kotlin/Models/address.dart';
class AppData extends ChangeNotifier {
late Address pickUpLocation;
void updatePickUpLocationAddress(Address pickUpAddress){
pickUpLocation = pickUpAddress;
notifyListeners();
}
}https://stackoverflow.com/questions/70479034
复制相似问题