我想在Flutter中使用sharedpreferences以便在我的flutter应用程序中创建用户个人资料页面。
这将是一次入门培训,目的是保存用户名,婚姻状况和生日。如果同一用户打开该应用程序,它将自动通过入职会话,并且该应用程序的主屏幕将打开。
我不想使用登录过程。当用户打开应用程序时,如果用户完成了入职,则该应用程序将自动识别该用户。将有3个单独的页面,询问用户的姓名,年龄和性别。用户完成入职后,应用程序将保存用户的所有信息资料页面。用户界面将类似于以下视频:)Here is the UI video
我该怎么实现?
如果用户详细信息保存在存储器中,则可以导航到登录页面,否则,使用下面的代码将其导航到首页
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
var email = prefs.getString('email');
print(email);
runApp(MaterialApp(home: email == null ? Login() : Home()));
}
成功登录后保存所需的用户详细信息
class Login extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () async {
//after the login REST api call && response code ==200
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('email', '[email protected]');
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (BuildContext ctx) => Home()));
},
child: Text('Login'),
),
),
);
}
}
clear the details on logout
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: RaisedButton(
onPressed: () async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.remove('email');
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (BuildContext ctx) => Login()));
},
child: Text('Logout'),
),
),
);
}
}
希望有帮助!
我创建了一个工作表,以使用共享首选项保存用户的生日,但我没有实现!
[能否请您检查下面的部分代码,并向我解释我犯了什么错误。谢谢!
bool isDateSelected = false;
DateTime birthDate;
DateTime _selectedDate;
@override
void initState() {
_read1();
super.initState();
}
_read1() async {
prefs = await SharedPreferences.getInstance();
setState(() {
prefs.getString('selectedDate');
});
}
void _pickDateDialog() {
showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1950),
lastDate: DateTime.now())
.then((pickedDate) {
if (pickedDate == null) {
return;
}
setState(() {
prefs.setString('selectedDate', _selectedDate.toIso8601String());
});
});
}
Padding(
padding: const EdgeInsets.all(10.0),
),
Text(
'Select Your Birthdate',
style: TextStyle(color: Colors.pink, fontSize: 20.0),
),
GestureDetector(
child: new Icon(
Icons.date_range,
color: Colors.pink,
),
onTap: () {
_pickDateDialog();
}),
Padding(
padding: const EdgeInsets.all(10.0),
),
Text(
_selectedDate == null
? 'No date chosen!'
: '${DateFormat.yMMMd().format(_selectedDate)}',
style: TextStyle(color: Colors.white),
),