Я использовал SharedPreferences, чтобы запомнить имя пользователя и пароль для входа в следующий раз без запроса пароля. Это работало хорошо, когда я отлаживал, используя свое реальное устройство с USB-кабелем. Но он не работает на моем устройстве, когда я собираю APK и устанавливаю его. Я не знаю, что мне не хватает.
Я сохраняю данные на странице входа в систему вот так:
Future<Null> loginUser(isLogin, name, fac, year, gender) async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('Name', name);
prefs.setString('IsLogin', isLogin);
prefs.setString('Faculty', fac);
prefs.setString('Year', year);
prefs.setString('Gender', gender);
prefs.setString('Email', email);
print(prefs.getString('Faculty'));
}
Я использовал этот код на главной странице. ...
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return NewMain();
}
}
class NewMain extends StatefulWidget {
@override
_NewMainState createState() => _NewMainState();
}
class _NewMainState extends State<NewMain> {
var name, fac, year, gender, email;
var goToLogin = true;
@override
void initState() {
// TODO: implement initState
checkRem();
super.initState();
}
@override
Widget build(BuildContext context) {
if (goToLogin)
return MaterialApp(
home: Login(),
);
else
return MaterialApp(
home: MainClass(name, fac, year, gender, email),
);
}
void checkRem() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
if (prefs.getString('IsLogin') == 'Yes') {
goToLogin = false;
fac = prefs.getString('Faculty');
name = prefs.getString('Name');
gender = prefs.getString('Gender');
year = prefs.getString('Year');
email = prefs.getString('Email');
}
}
}
Он перейдет в MainClass, если goToLogin имеет значение false. Он отлично работает в отладке. Он не работает на встроенном приложении apk.