如何在Flutter中使用Sharedpreferences以创建配置文件页面?

问题描述 投票:0回答:2

我想在Flutter中使用sharedpreferences以便在我的flutter应用程序中创建用户个人资料页面。

这将是一次入门培训,目的是保存用户名,婚姻状况和生日。如果同一用户打开该应用程序,它将自动通过入职会话,并且该应用程序的主屏幕将打开。

我不想使用登录过程。当用户打开应用程序时,如果用户完成了入职,则该应用程序将自动识别该用户。将有3个单独的页面,询问用户的姓名,年龄和性别。用户完成入职后,应用程序将保存用户的所有信息资料页面。用户界面将类似于以下视频:)Here is the UI video

我该怎么实现?

flutter sharedpreferences profile
2个回答
2
投票

如果用户详细信息保存在存储器中,则可以导航到登录页面,否则,使用下面的代码将其导航到首页

 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'),
        ),
      ),
    );
  }
}

希望有帮助!


0
投票

我创建了一个工作表,以使用共享首选项保存用户的生日,但我没有实现!

[能否请您检查下面的部分代码,并向我解释我犯了什么错误。谢谢!

  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),
            ),
© www.soinside.com 2019 - 2024. All rights reserved.