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

提问人:Mohamed Khalid 提问时间:3/29/2023 最后编辑:Mohamed Khalid 更新时间:3/29/2023 访问量:492

问:

我正在尝试登录一个名为 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</标题>

flutter dart 运行时 unhandled-exception invalid-argument

评论

0赞 Harsh Sureja 3/29/2023
您可能会在 API 中收到不适当的响应。

答: 暂无答案