提问人:Mohamed Khalid 提问时间:3/29/2023 最后编辑:Mohamed Khalid 更新时间:3/29/2023 访问量:492
E/flutter (18631):[错误:flutter/runtime/dart_vm_initializer.cc(41)] 未经处理的异常:参数无效(输入):不得为空
E/flutter (18631): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Invalid argument(s) (input): Must not be null
问:
我正在尝试登录一个名为 stackfood 的餐厅应用程序的送货应用程序。 但是当我尝试通过提供凭据登录时,应用程序没有登录,它显示此错误。
auth_repo.飞镖。
class AuthRepo {
final ApiClient apiClient;
final SharedPreferences sharedPreferences;
AuthRepo({@required this.apiClient, @required this.sharedPreferences});
Future<Response> login(String phone, String password) async {
return await apiClient.postData(AppConstants.LOGIN_URI, {"phone": phone, "password": password});
}
Future<Response> getProfileInfo() async {
return await apiClient.getData(AppConstants.PROFILE_URI + getUserToken());
}
Future<Response> recordLocation(RecordLocationBody recordLocationBody) {
recordLocationBody.token = getUserToken();
return apiClient.postData(AppConstants.RECORD_LOCATION_URI, recordLocationBody.toJson());
}
Future<http.StreamedResponse> updateProfile(ProfileModel userInfoModel, XFile data, String token) async {
http.MultipartRequest request = http.MultipartRequest('POST', Uri.parse('${AppConstants.BASE_URL}${AppConstants.UPDATE_PROFILE_URI}'));
request.headers.addAll(<String,String>{'Authorization': 'Bearer $token'});
if(GetPlatform.isMobile && data != null) {
File _file = File(data.path);
request.files.add(http.MultipartFile('image', _file.readAsBytes().asStream(), _file.lengthSync(), filename: _file.path.split('/').last));
}else if(GetPlatform.isWeb && data != null) {
Uint8List _list = await data.readAsBytes();
var part = http.MultipartFile('image', data.readAsBytes().asStream(), _list.length, filename: basename(data.path),
contentType: MediaType('image', 'jpg'));
request.files.add(part);
}
Map<String, String> _fields = Map();
_fields.addAll(<String, String>{
'_method': 'put', 'f_name': userInfoModel.fName, 'l_name': userInfoModel.lName,
'email': userInfoModel.email, 'token': getUserToken()
});
request.fields.addAll(_fields);
http.StreamedResponse response = await request.send();
return response;
}
Future<Response> changePassword(ProfileModel userInfoModel, String password) async {
return await apiClient.postData(AppConstants.UPDATE_PROFILE_URI, {'_method': 'put', 'f_name': userInfoModel.fName,
'l_name': userInfoModel.lName, 'email': userInfoModel.email, 'password': password, 'token': getUserToken()});
}
Future<Response> updateActiveStatus({int shiftId}) async {
Map<String, String> body = {};
body['token'] = getUserToken();
if(shiftId != null){
body['shift_id'] = shiftId.toString();
}
return await apiClient.postData(AppConstants.ACTIVE_STATUS_URI, body);
}
Future<Response> updateToken() async {
String _deviceToken;
if (GetPlatform.isIOS) {
FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(alert: true, badge: true, sound: true);
NotificationSettings settings = await FirebaseMessaging.instance.requestPermission(
alert: true, announcement: false, badge: true, carPlay: false,
criticalAlert: false, provisional: false, sound: true,
);
if(settings.authorizationStatus == AuthorizationStatus.authorized) {
_deviceToken = await _saveDeviceToken();
}
}else {
_deviceToken = await _saveDeviceToken();
}
if(!GetPlatform.isWeb) {
FirebaseMessaging.instance.subscribeToTopic(AppConstants.TOPIC);
FirebaseMessaging.instance.subscribeToTopic(sharedPreferences.getString(AppConstants.ZONE_TOPIC));
}
return await apiClient.postData(AppConstants.TOKEN_URI, {"_method": "put", "token": getUserToken(), "fcm_token": _deviceToken});
}
Future<String> _saveDeviceToken() async {
String _deviceToken = '';
if(!GetPlatform.isWeb) {
_deviceToken = await FirebaseMessaging.instance.getToken();
}
if (_deviceToken != null) {
print('--------Device Token---------- '+_deviceToken);
}
return _deviceToken;
}
Future<Response> forgetPassword(String phone) async {
return await apiClient.postData(AppConstants.FORGET_PASSWORD_URI, {"phone": phone});
}
Future<Response> verifyToken(String phone, String token) async {
return await apiClient.postData(AppConstants.VERIFY_TOKEN_URI, {"phone": phone, "reset_token": token});
}
Future<Response> resetPassword(String resetToken, String phone, String password, String confirmPassword) async {
return await apiClient.postData(
AppConstants.RESET_PASSWORD_URI,
{"_method": "put", "phone": phone, "reset_token": resetToken, "password": password, "confirm_password": confirmPassword},
);
}
Future<bool> saveUserToken(String token, String topic) async {
apiClient.token = token;
apiClient.updateHeader(token, sharedPreferences.getString(AppConstants.LANGUAGE_CODE));
sharedPreferences.setString(AppConstants.ZONE_TOPIC, topic);
return await sharedPreferences.setString(AppConstants.TOKEN, token);
}
String getUserToken() {
return sharedPreferences.getString(AppConstants.TOKEN) ?? "";
}
bool isLoggedIn() {
return sharedPreferences.containsKey(AppConstants.TOKEN);
}
Future<bool> clearSharedData() async {
if(!GetPlatform.isWeb) {
await FirebaseMessaging.instance.unsubscribeFromTopic(AppConstants.TOPIC);
FirebaseMessaging.instance.unsubscribeFromTopic(sharedPreferences.getString(AppConstants.ZONE_TOPIC));
apiClient.postData(AppConstants.TOKEN_URI, {"_method": "put", "token": getUserToken(), "fcm_token": '@'});
}
await sharedPreferences.remove(AppConstants.TOKEN);
await sharedPreferences.setStringList(AppConstants.IGNORE_LIST, []);
await sharedPreferences.remove(AppConstants.USER_ADDRESS);
apiClient.updateHeader(null, null);
return true;
}
Future<void> saveUserNumberAndPassword(String number, String password, String countryCode) async {
try {
await sharedPreferences.setString(AppConstants.USER_PASSWORD, password);
await sharedPreferences.setString(AppConstants.USER_NUMBER, number);
await sharedPreferences.setString(AppConstants.USER_COUNTRY_CODE, countryCode);
} catch (e) {
throw e;
}
}
String getUserNumber() {
return sharedPreferences.getString(AppConstants.USER_NUMBER) ?? "";
}
String getUserCountryCode() {
return sharedPreferences.getString(AppConstants.USER_COUNTRY_CODE) ?? "";
}
String getUserPassword() {
return sharedPreferences.getString(AppConstants.USER_PASSWORD) ?? "";
}
bool isNotificationActive() {
return sharedPreferences.getBool(AppConstants.NOTIFICATION) ?? true;
}
void setNotificationActive(bool isActive) {
if(isActive) {
updateToken();
}else {
if(!GetPlatform.isWeb) {
FirebaseMessaging.instance.unsubscribeFromTopic(AppConstants.TOPIC);
FirebaseMessaging.instance.unsubscribeFromTopic(sharedPreferences.getString(AppConstants.ZONE_TOPIC));
}
}
sharedPreferences.setBool(AppConstants.NOTIFICATION, isActive);
}
Future<bool> clearUserNumberAndPassword() async {
await sharedPreferences.remove(AppConstants.USER_PASSWORD);
await sharedPreferences.remove(AppConstants.USER_COUNTRY_CODE);
return await sharedPreferences.remove(AppConstants.USER_NUMBER);
}
Future<Response> deleteDriver() async {
return await apiClient.deleteData(AppConstants.DRIVER_REMOVE + getUserToken());
}
Future<Response> getZoneList() async {
return await apiClient.getData(AppConstants.ZONE_LIST_URI);
}
Future<Response> getZone(String lat, String lng) async {
return await apiClient.getData('${AppConstants.ZONE_URI}?lat=$lat&lng=$lng');
}
Future<bool> saveUserAddress(String address) async {
apiClient.updateHeader(
sharedPreferences.getString(AppConstants.TOKEN),
sharedPreferences.getString(AppConstants.LANGUAGE_CODE),
);
return await sharedPreferences.setString(AppConstants.USER_ADDRESS, address);
}
String getUserAddress() {
return sharedPreferences.getString(AppConstants.USER_ADDRESS);
}
Future<Response> registerDeliveryMan(DeliveryManBody deliveryManBody, List<MultipartBody> multiParts) async {
return apiClient.postMultipartData(AppConstants.DM_REGISTER_URI, deliveryManBody.toJson(), multiParts);
}
Future<Response> getVehicleList() async {
return await apiClient.getData(AppConstants.VEHICLES_URI);
}
Future<Response> getShiftList() {
return apiClient.getData('${AppConstants.SHIFT_URI}${getUserToken()}');
}
}
错误
I/ViewRootImpl@947eef6\[MainActivity\](18631): Relayout returned: old=(0,0,1080,2220) new= (0,0,1080,2220) req=(1080,2220)0 dur=16 res=0x1 s={true 545377816576} ch=false
E/flutter (18631): \[ERROR:flutter/runtime/dart_vm_initializer.cc(41)\] Unhandled Exception: Invalid argument(s) (input): Must not be null
E/flutter (18631): #0 \_RegExp.hasMatch (dart:core-patch/regexp_patch.dart:254:24)
E/flutter (18631): #1 \_assertTopicName (package:firebase_messaging/src/messaging.dart:289:60)
E/flutter (18631): #2 FirebaseMessaging.unsubscribeFromTopic (package:firebase_messaging/src/messaging.dart:283:5)
E/flutter (18631): #3 AuthRepo.clearSharedData (package:efood_multivendor_driver/data/repository/auth_repo.dart:138:34)
E/flutter (18631): \<asynchronous suspension\>
E/flutter (18631): #4 AuthController.clearSharedData (package:efood_multivendor_driver/controller/auth_controller.dart:333:12)
E/flutter (18631): \<asynchronous suspension\>
E/flutter (18631):
I/flutter (18631): ====\> API Response: \[404\] /api/v1/delivery-man/dm-shift?token=
I/flutter (18631): \<!DOCTYPE html\>
I/flutter (18631): \<html lang="en"\>
I/flutter (18631): \<head\>
I/flutter (18631): \<!-- Required Meta Tags Always Come First --\>
I/flutter (18631): \<meta charset="utf-8"\>
I/flutter (18631): \<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"\>
I/flutter (18631):
I/flutter (18631): \<!-- Title --\>
I/flutter (18631): \<title\>Error 404 | AquaFood\</title\>
I/ViewRootImpl@947eef6[MainActivity](18631):返回重新布局:old=(0,0,1080,2220) new= (0,0,1080,2220) req=(1080,2220)0 dur=16 res=0x1 s={true 545377816576} ch=false E/flutter (18631):[错误:flutter/runtime/dart_vm_initializer.cc(41)] 未经处理的异常:参数无效(输入):不得为空 E/flutter (18631): #0 _RegExp.hasMatch (dart:core-patch/regexp_patch.dart:254:24) E/flutter (18631): #1 _assertTopicName (package:firebase_messaging/src/messaging.dart:289:60) E/flutter (18631): #2 FirebaseMessaging.unsubscribeFromTopic (package:firebase_messaging/src/messaging.dart:283:5) E/flutter (18631):#3 AuthRepo.clearSharedData (package:efood_multivendor_driver/data/repository/auth_repo.dart:138:34) E/flutter (18631):<异步挂起> E/flutter (18631): #4 AuthController.clearSharedData (package:efood_multivendor_driver/controller/auth_controller.dart:333:12) E/flutter (18631):<异步挂起> E/颤振 (18631): I/flutter (18631): ====> API 响应:[404] /api/v1/delivery-man/dm-shift?token= I/flutter (18631):<!DOCTYPE html> I/flutter (18631): <html lang=“en”> I/flutter (18631):<头> I/flutter (18631):<!--必需的元标记始终排在第一位 --> I/flutter (18631):<meta charset=“utf-8”> I/flutter (18631):<meta name=“viewport” content=“width=device-width, initial-scale=1, shrink-to-fit=no”> I/颤振 (18631): I/flutter (18631): <!--标题 --> I/flutter (18631):<title>Error 404 |AquaFood</标题>
答: 暂无答案
评论