commandReadBasicInfo static method

Future<BasicInfo> commandReadBasicInfo()

Implementation

static Future<BasicInfo> commandReadBasicInfo() async {
  var basicInfoReadBinary = await FlutterNfcMynumber.transceive(
      Uint8List.fromList(MynumberCommand.commandBasicInfoReadBinary));
  commandResultCheck(basicInfoReadBinary);

  var nameIndex = _indexOfCommand(
      basicInfoReadBinary, MynumberCommand.commandBasicInfoHeaderName);
  var addressIndex = _indexOfCommand(
      basicInfoReadBinary, MynumberCommand.commandBasicInfoHeaderAddress);
  var birthdayIndex = _indexOfCommand(
      basicInfoReadBinary, MynumberCommand.commandBasicInfoHeaderBirthday);
  var genderIndex = _indexOfCommand(
      basicInfoReadBinary, MynumberCommand.commandBasicInfoHeaderGender);

  var name =
      basicInfoReadBinary.getRange(nameIndex + 3, addressIndex).toList();
  var address =
      basicInfoReadBinary.getRange(addressIndex + 3, birthdayIndex).toList();
  var birthday =
      basicInfoReadBinary.getRange(birthdayIndex + 3, genderIndex).toList();
  var genderInfo = basicInfoReadBinary[genderIndex + 3].toRadixString(16);

  var gender;
  switch (genderInfo) {
    case "31":
      gender = Gender.MEN;
      break;
    case "32":
      gender = Gender.WOMEN;
      break;
    case "33":
      gender = Gender.OTHER;
      break;
    default:
      gender = Gender.MEN;
  }

  return BasicInfo(
      utf8.decode(name), utf8.decode(address), utf8.decode(birthday), gender);
}