Код: Выделить всё
Future register(
String name,
String password,
String phoneNo,
String birthday,
String gender
) async {
var pref = await SharedPreferences.getInstance();
var token = pref.getString(SharedPreferencesKeys.fcmToken) ?? '';
Map data = {
'username': name,
'userbirth': birthday,
'gender': gender,
'phoneno': phoneNo,
'password': password,
'fcm': token,
};
var url = Uri.parse(Url.getSignupUrl());
var body = json.encode(data);
try {
var response = await http.post(
url,
headers: {
'Content-Type': 'application/json',
},
body: body,
).timeout(const Duration(seconds: 10));
if (response.statusCode == 200) {
Map decodedJson = json.decode(response.body); // for future use
String accessToken = decodedJson['result']['tokens']['accessToken']['accessToken'];
int accessTokenTimeout = decodedJson['result']['tokens']['accessToken']['timeout'];
String refreshToken = decodedJson['result']['tokens']['refreshToken']['refreshToken'];
int refreshTokenTimeout = decodedJson['result']['tokens']['refreshToken']['timeout'];
String userId = decodedJson['result']['userId'];
const storage = FlutterSecureStorage(
aOptions: AndroidOptions(
encryptedSharedPreferences: true,
)
);
print('register: $userId, $name, $phoneNo, $birthday, $sex');
storage.write(key: SecureStorageKeys.userId, value: userId);
storage.write(key: SecureStorageKeys.name, value: name);
storage.write(key: SecureStorageKeys.phoneNo, value: phoneNo);
storage.write(key: SecureStorageKeys.birthday, value: birthday);
storage.write(key: SecureStorageKeys.sex, value: sex);
await pref.setString(SharedPreferencesKeys.accessToken, accessToken);
await pref.setString(SharedPreferencesKeys.refreshToken, refreshToken);
await pref.setInt(SharedPreferencesKeys.accessTokenTimeout, accessTokenTimeout);
await pref.setInt(SharedPreferencesKeys.refreshTokenTimeout, refreshTokenTimeout);
return(response.statusCode);
} else {
return(-1);
}
} catch (e) {
return(-1);
}
}
Кроме того, конечная точка API — http://WW.XXX.YYY.ZZZ:3000/my/route
Я думал, что код работает, потому что он отлично работал на любых устройствах iOS и некоторых более старых версиях устройств Android (Galaxy Tab A7 Lite и эмуляторы Android от Android Studio — они используют Android 14)
Я также добавлен файл конфигурации main/res/xml/network_security_config.xml
Код: Выделить всё
WW.XXX.YYY.ZZZ
Код: Выделить всё
Код: Выделить всё
[✓] Flutter (Channel stable, 3.24.0, on macOS 14.2 23C64 darwin-arm64, locale ko-KR)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.4)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.1)
[✓] VS Code (version 1.94.2)
[✓] VS Code (version 1.91.1)
[✓] Network resources
Подробнее здесь: https://stackoverflow.com/questions/791 ... id-devices