Как я могу использовать общие настройки во Flutter для создания страницы профиля? - PullRequest
0 голосов
/ 25 мая 2020

Я хотел бы использовать общие настройки с Flutter, чтобы создать страницу профиля пользователя в моем приложении flutter.

Это будет сеанс подключения, чтобы сохранить имя пользователя, семейное положение и день рождения. Если тот же пользователь откроет приложение, он автоматически пройдет сеанс подключения, и откроется главный экран приложения.

Я не хочу использовать процесс входа в систему. Когда пользователь открывает приложение, приложение автоматически распознает пользователя, если пользователь завершил регистрацию. Будет 3 отдельные страницы, на которых спрашивают имя, возраст и пол пользователя. После того, как пользователь завершит регистрацию, приложение сохранит всю информационную страницу профиля пользователя. Пользовательский интерфейс будет похож на видео ниже :) Вот видео пользовательского интерфейса

Как я могу это реализовать?

Ответы [ 2 ]

2 голосов
/ 25 мая 2020

Вы можете перейти на страницу входа, если данные пользователя сохранены в хранилище, иначе на главную страницу с кодом ниже

 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', 'useremail@gmail.com');
            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 голосов
/ 28 мая 2020

Я создал таблицу, чтобы сохранить дату рождения пользователя с общими настройками, но не достиг!

Не могли бы вы проверить часть приведенных ниже кодов и объяснить мне, в чем заключается ошибка, которую я сделал. Спасибо!

  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),
            ),
...