Необработанное исключение: RangeError: Значение не находится в диапазоне: 22 - PullRequest
1 голос
/ 28 апреля 2020

Я получаю следующую ошибку, когда изображение не установлено для пользователя:

"Необработанное исключение: RangeError: Значение не находится в диапазоне: 22"

, когда фото установлено, все идет хорошо

Мой код:

Future<Map> getData() async {
    final prefs = await SharedPreferences.getInstance();
    if (prefs != null) {
      var photo = ((prefs.getString('photo') ?? ""));
      print('photo');
      print(photo);
      String image = "";
      if (image != null && image != "") {
        image = photo.substring(22);
      }
    } else {
      print('usu error');
    }
  }

1 Ответ

1 голос
/ 28 апреля 2020

В соответствии с ошибкой, если photo - пустая строка, то использование substring(22) в photo вызовет исключение, поэтому добавьте еще одну проверку photo.length > 22, чтобы проверить длину перед подстрокой как:

 if (image != null && image != "" && photo.length > 22) {

image всегда пуст, поскольку image объявляется и инициализируется непосредственно перед if, поэтому вы можете изменить условие if следующим образом:

if (prefs != null) {
      var photo = ((prefs.getString('photo') ?? ""));
      print('photo');
      print(photo);
      String image = "";
      if (photo.length > 22) {
        image = photo.substring(22);
      }
    } else {
      print('usu error');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...