Я создаю экран входа в систему, используя флаттер, и сохраняю пользовательские данные в общих настройках, если это правильно, тогда я проверил сохраненные данные на втором экране, и они уже были сохранены, когда приложение закрывается и снова открывается, я проверяюразделяемый префикс, но он становится нулевым, это мои функции saveData и getData
String namePref,phonePref, typePref,statePref;
Future saveDataPref(String name,String phone, String type, String state )async{
SharedPreferences pref = await SharedPreferences.getInstance();
pref.setString('phone', phone);
pref.setString('name', name);
pref.setString('type', type);
pref.setString('state', state);
pref.commit();
print('pref stored');
print('${pref.getString('phone')}');
}
Future getDataPref() async{
SharedPreferences pref = await SharedPreferences.getInstance();
phonePref = pref.getString('phone');
namePref = pref.getString('name');
typePref = pref.getString('type');
statePref = pref.getString('state');
}
Я должен упомянуть две вещи: функция "commit" устарела, вторая заключается в том, что код работал с устаревшей фиксацией, но это не такЯ удалил все внесенные изменения, но они все еще не работают на моем устройстве и других устройствах, и я не знаю, почему!если нет решения, есть ли альтернатива общим предпочтениям во флаттере?вот где я использую saveDataPref ()
Future login(BuildContext context) async {
String password = passwordController.text;
String phone = phoneController.text;
print("entered login function");
//check if the user is registered
Map<String, User> users = new Map<String, User>();
users = await getUserDataFromFireStore();
if (await userCheck(phone)) {
// user is registered check if it is the right password
if (users[phone].password == password) {
// check if the user have an order
saveDataPref (пользователи [телефон] .phone, пользователи [телефон] .name, "пользователь", пользователи [телефон] .ordered);
if (users[phone].ordered == "true") {
Navigator.push(
context, MaterialPageRoute(builder: (context) => OrderBinding()));
return;
} else {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => UserApp(
userName: users[phone].name,
userPhone: users[phone].phone,
)));
return;
}
} else {
ShowDialogue(
"تم إدخال كلمة السر بشكل خاطئ من فضلك تأكد من كلمة السر", context);
}
}
Map<String, Driver> drivers = new Map<String, Driver>();
drivers = await getDriverDataFromFireStore();
if (await DriverCheck(phone)) {
// user is registered check if it is the right password
if (drivers[phone].password == password) {
//check if driver account is activated
if (drivers[phone].activation == "true") {
saveDataPref(drivers[phone].phone, drivers[phone].name, "driver",
drivers[phone].activation);
Navigator.push(
context, MaterialPageRoute(builder: (context) => DriverApp()));
} else {
ShowDialogue(
"لم يتم تفعيل حسابكم بعد يرجى الانتظار وسيتم التواصل معكم قريباً",
context);
}
} else {
ShowDialogue(
"تم إدخال كلمة السر بشكل خاطئ من فضلك تأكد من كلمة السر", context);
}
} else {
ShowDialogue(
"لم يتم تسجيل هذا المستخدم من فضلك قم بانشاء حساب اولا", context);
}
}
здесь я проверяю правильность данных для входа в систему, проверяю функцию и работаю, она открывает saveDataPref () и использую извлечение данных с другого экрана, и это работает, но при закрытии приложения и его открытии сновая использую getDataPref (), но извлеченные данные здесь равны нулю, где я использую getDataPref (), чтобы проверить, зарегистрирован ли пользователь, поэтому перейдите на экран UserApp и, если нет, откройте домашний экран
checkSigned() {
getDataPref();
print("${phonePref}");
print("${namePref}");
if (phonePref != null) {
print("${phonePref}");
if (phonePref != "") {
print("${phonePref}");
return new UserApp(
userName: namePref,
userPhone: phonePref,
);
} else {
return new MyHomePage();
}
} else {
return new MyHomePage();
}
}
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Generated App',
theme: new ThemeData(
primarySwatch: Colors.lightGreen,
primaryColor: const Color(0xFF8BC34A),
accentColor: const Color(0xFF8BC34A),
canvasColor: const Color(0xFFEEEEEE),
),
home: checkSigned(),
);
}
}