Введенные пользователем данные не сохраняются в Firebase_realtime_database

#android #firebase #flutter #dart #firebase-realtime-database

#Android #firebase #флаттер #dart #firebase-realtime-database

Вопрос:

Введенные пользователем данные не сохраняются в Firebase_realtime_database.Я попытался создать форму личной информации. Но когда я нажимаю на кнопку отправки, данные, введенные пользователем, не сохраняются в firebase (база данных реального времени). Что может быть ошибкой?

 import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:intl/intl.dart';
import 'package:firebase_database/firebase_database.dart';

class DonorRegistration extends StatefulWidget {
  @override
 DonorRegistration({Key key}) : super(key: key);

 @override
 _DonorRegistrationState createState() => _DonorRegistrationState();
}
}

class _DonorRegistrationState extends State<DonorRegistration> {
 var data;
 bool autoValidate = true;
bool readOnly = false;
bool showSegmentedControl = true;
final GlobalKey<FormBuilderState> _fbKey = GlobalKey<FormBuilderState>();

final ValueChanged _onChanged = (val) => print(val);

var currentItemSelected3;
bool disabledropdown = true;
final TextEditingController _nameController = TextEditingController();
String _gender = 'Male';

final TextEditingController _ageController = TextEditingController();

final dbRef = FirebaseDatabase.instance.reference().child("donor");
  

Это область пользовательского интерфейса

 enter code here
@override
Widget build(BuildContext context) {
return Scaffold(
  appBar: AppBar(
    backgroundColor: Color.fromRGBO(1500, 0, 5, 1),
    title: Text('Donor Registration'),
  ),
  body: Padding(
    padding: const EdgeInsets.all(10),
    child: ListView(
      children: <Widget>[
        Container(
            height: 100,
            width: 100,
            child: CircleAvatar(
                backgroundColor: Colors.transparent,
                radius: 65.0,
                child: Image.asset('lib/assets/logo.png'))),
        FormBuilder(
          // context,
          key: _fbKey,
          // autovalidate: true,

          readOnly: false,
          child: Column(
            children: <Widget>[
              Text('Personal Information'),
              SizedBox(height: 15),
              FormBuilderTextField(
                attribute: 'Name',
                controller: _nameController,
                decoration: const InputDecoration(
                  border: OutlineInputBorder(),
                  icon: Icon(
                    Icons.account_circle,
                    color: Color.fromRGBO(255, 0, 0, 1),
                  ),
                  labelText: 'Full Name',
                  hintText: 'Enter Your Full name',
                ),
                validators: [
                  FormBuilderValidators.required(
                      errorText: 'This field required')
                ],
                keyboardType: TextInputType.name,
                //controller: _nameController,
              ),
              SizedBox(height: 25),
              FormBuilderRadioGroup(
                attribute: 'radio_group',
                decoration: const InputDecoration(
                    //value: gender,
                    border: OutlineInputBorder(),
                    icon: Icon(
                      Icons.person_pin,
                      color: Color.fromRGBO(255, 0, 0, 1),
                    ),
                    labelText: 'Gender'),
                onChanged: _onChanged,
                options: [
                  FormBuilderFieldOption(value: 'M', child: Text('Male')),
                  FormBuilderFieldOption(value: 'F', child: Text('Female')),
                  FormBuilderFieldOption(value: 'O', child: Text('Other')),
                ]
                    .map((_gender) => FormBuilderFieldOption(
                          value: _gender,
                          child: Text('$_gender'),
                        ))
                    .toList(growable: false),
                validators: [
                  FormBuilderValidators.required(
                      errorText: 'This field required')
                ],
              ),
           

              SizedBox(height: 15),
              FormBuilderTextField(
                attribute: 'age',
                // autovalidate: true,
                controller: _ageController,
                decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: 'Age',
                  icon: Icon(
                    Icons.confirmation_number,
                    color: Color.fromRGBO(255, 0, 0, 1),
                  ),
                ),
                validators: [
                  FormBuilderValidators.required(
                      errorText: 'This field required')
                ],
                keyboardType: TextInputType.number,
              ),

              FormBuilderSwitch(
                label: Text('I Accept the tems and conditions'),
                attribute: 'accept_terms_switch',
                initialValue: true,
                onChanged: _onChanged,
              ),

              SizedBox(height: 15),
            ],
          ),
        ),
        Row(
          children: <Widget>[
            Expanded(
              child: MaterialButton(
                color: Theme.of(context).accentColor,
                child: Text(
                  'Submit',
                  style: TextStyle(color: Colors.white),
                ),
                onPressed: () {
                  if (_fbKey.currentState.validate()) {
                    dbRef.push().set({
                      "name": _nameController.text,
                      "age": _ageController.text,
                      "gender": _gender,
                      "disease": _diseaseController.text,
                      "blood_group": _blood,
                      "body_part": _donate,
                      "Hospitals": _hospital,
                    }).then((_) {
                      Scaffold.of(context).showSnackBar(
                          SnackBar(content: Text('Successfully Added')));
                      _ageController.clear();
                      _nameController.clear();
                    }).catchError((onError) {
                      Scaffold.of(context)
                          .showSnackBar(SnackBar(content: Text(onError)));
                    });
                  } else {
                    print(_fbKey.currentState.value);
                    print('validation failed');
                  }
                },
              ),
            ),
            SizedBox(width: 20),
            Expanded(
                child: MaterialButton(
              color: Theme.of(context).accentColor,
              child: Text(
                'Reset',
                style: TextStyle(color: Colors.white),
              ),
              onPressed: () {
                _fbKey.currentState.reset();
              },
              )),
            ],
          ),
        ],
      ),
    ),
  );
  }

@override
void dispose() {
  super.dispose();
  _ageController.dispose();
  _nameController.dispose();
  }
}
  

пожалуйста, скажите мне, какие могут быть ошибки.

Комментарии:

1. в чем ошибка?

2. Ошибки нет. Но после нажатия кнопки Сохранения информация должна сохраняться в базе данных. Но этого не происходит. В real_time_database ничего не отображается. Есть ли что-то, что я пропустил при написании кода?

3. Вы пробовали просто записывать в базу данных некоторые жестко запрограммированные данные, чтобы проверить, работает ли самая простая запись? Я бы попробовал это, если вам не нужно просто сузить проблему до вашего кода, а не того, как у вас настроена firebase, а затем вы можете вернуться к проблеме оттуда.