Я пытаюсь решить эту проблему, при первом входе в свое приложение все в порядке, , но когда я выхожу и снова авторизируюсь , текущий пользователь (полученный из анализа) является предыдущим. , Если я снова позвоню текущему пользователю в другом виджете, текущий пользователь будет правильным, но не в начале.
Я думаю, что метод выхода из системы является правильным, потому что, как я объяснил ранее, в других виджетах в приложении, текущий пользователь является правильным.
static Future<void> logOut() async {
ParseUser currentUser = await ParseUser.currentUser();
ParseResponse userResponse =
await ParseUser.getCurrentUserFromServer(currentUser.sessionToken);
ParseUser user = userResponse.result as ParseUser;
await user.logout(deleteLocalUserData: true);
}
Это метод входа в систему
Future<ParseResponse> login() async {
try {
final Map<String, dynamic> queryParams = <String, String>{
keyVarUsername: username,
keyVarPassword: password
};
final Uri url = getSanitisedUri(_client, '$keyEndPointLogin',
queryParams: queryParams);
_saveChanges();
final Response response =
await _client.get(url, headers: <String, String>{
keyHeaderRevocableSession: '1',
});
return await _handleResponse(
this, response, ParseApiRQ.login, _debug, parseClassName);
} on Exception catch (e) {
return handleException(e, ParseApiRQ.login, _debug, parseClassName);
}
}
Это класс , который появляется сразу после завершения входа в систему и где я пытаюсь получить текущего пользователя , достигнув предыдущего пользователя .
class UserInterfaceAppPage extends StatefulWidget {
@override
_UserInterfaceAppPageState createState() => _UserInterfaceAppPageState();
}
class _UserInterfaceAppPageState extends State<UserInterfaceAppPage> {
int _currentIndex = 0;
static List<Widget> _widgetOptions = <Widget>[];
Future<SharedPreferences> pref;
Future<bool> dishes;
_UserInterfaceAppPageState() {
initState();
}
@override
void initState() {
super.initState();
dishes = DbHelper.insertDishes();
Future<User> _currentUser = ParseManager().getActualUser();
Это метод getActualUser () , где я получаю текущего пользователя.
Future<User> getActualUser() async {
ParseUser currentUser = await ParseUser.currentUser();
ParseResponse userResponse =
await ParseUser.getCurrentUserFromServer(currentUser.sessionToken);
ParseUser user = userResponse.result as ParseUser;
User actualUser = User.fromParse(user);
return actualUser;
}
Пожалуйста, дайте мне знать, если вам нужно больше информации о каком-либо методе или классе в моем приложении. Я пробовал так много вещей, включая обновление SDK, но у меня последняя версия, и я не смог найти подобную проблему.
Наконец, это вывод команды flutter doctor
[✓] Flutter (Channel stable, v1.12.13+hotfix.8, on Mac OS X 10.15.3 19D76, locale es-ES)
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 11.2.1)
[✓] Android Studio (version 3.6)
[!] VS Code (version 1.43.0)
✗ Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[✓] Connected device (1 available)
! Doctor found issues in 1 category.