#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 этого, что после того, как пользователь нажмет рядом с этим заданным состоянием для этой коллекции базы данных из изображения