Как получить сведения о вводе текста с другой страницы

#android #ios #firebase #flutter #dart

# #Android #iOS #огневая база #трепетание #dart

Вопрос:

Мне нужно вызвать детали ввода текста с другой страницы, потому что у меня есть ввод текста на одной странице, а на другой странице — код для сбора сведений о firebase, поэтому теперь я хочу, чтобы после ввода пользователем и нажатия next сохранить на другой странице

Здесь я собираю данные

   // Check if user is new or old
// If user is new then add new user to firebase firestore katabase
if (diff < Duration(seconds: 15)) {
  UserModel model = UserModel(
    bio: '',
    bio2: "",
    status: '',
     userName: _gUserNameController,    // now here is error, need get function
    dob: DateTime(2002, DateTime.now().month, DateTime.now().day   3)
        .toString(),
    location: 'Location',
    profilePic: user.photoURL,
    displayName: user.displayName,
    email: user.email,
 

и это код для другой страницы imput

 TextEditingController _gUserNameController;
 

Texxh imput

  Container(
            decoration: BoxDecoration(
                border: Border.all(width: 1.0, color: Colors.black26),
                borderRadius: BorderRadius.circular(7.0)),
            child: TextField(
              controller: _gUserNameController,
              decoration: InputDecoration(
                  border: InputBorder.none,
                  contentPadding: const EdgeInsets.all(10.0),
                  labelText: "Username",
                  labelStyle: TextStyle(fontSize: 15.0)),
            ),
          ),
 

При нажатии

   GestureDetector(
              onTap: () {
                if (_gUserNameController.text == null ||
                    _gUserNameController.text.length == 0) {
                  return;
                }
                Navigator.pop(context, _gUserNameController.text);
              },
              child: Container(
                width: 350.0,
                height: 50.0,
                child: Center(
                    child: Text(
                  "Next",
                  style: TextStyle(
                      color: Colors.white,
                      fontSize: 15.0,
                      fontWeight: FontWeight.bold),
                )),
                decoration: BoxDecoration(
                    color: Colors.black,
                    borderRadius: BorderRadius.circular(7.0)),
              ))
 

Ответ №1:

Для обработки возвращаемых данных со страницы B (с использованием текстового поля или чего-либо еще) на вашей странице A ваша страница A должна await быть страницей B

На странице A

 final value = await Navigator.of(context).push(MaterialPageRoute(builder: (context) => B(),));
if (null != value) {
  // run your desired code with returned data
}
 

На вашей странице B

 Navigator.of(context).pop(_gUserNameController.text);
 

Ответ №2:

Я действительно не понимаю вашего вопроса, и с вашими фрагментами кода трудно сказать. Итак, позвольте мне ответить на это в целом. На странице A вы получаете ввод текстового поля, которое хранится в _gUserNameController. А на странице B вы сохраняете данные в FireStore. Итак, на странице A вы вызываете страницу B с B(_gUserNameController.text) помощью . Затем. страница B выглядит так:

 class B extends StatelessWidget {
  B(this.gUserName);
  String gUserName;
  ...
}
 

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

и соберите их здесь, в этой базе данных

Это текст, введенный на другой странице

       Container(
            decoration: BoxDecoration(
                border: Border.all(width: 1.0, color: Colors.black26),
                borderRadius: BorderRadius.circular(7.0)),
            child: TextField(
              controller: _gUserNameController,
              decoration: InputDecoration(
                  border: InputBorder.none,
                  contentPadding: const EdgeInsets.all(10.0),
                  labelText: "Username",
                  labelStyle: TextStyle(fontSize: 15.0)),
            ),
          ),
 

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