Местоположение не обновляется в профиле и хранилище - PullRequest
0 голосов
/ 05 августа 2020

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

class User {
  final String uid;
  final String name;
  final String email;
  final String userRole;
  String adress;
  User({this.uid, this.name, this.email, this.userRole, this.adress});
  User.fromData(Map<String, dynamic> data)
      : uid = data['uid'],
        name = data['name'],
        email = data['email'],
        userRole = data['userRole'],
        adress = data['adress'];

  Map<String, dynamic> toJson() => {
        'uid': uid,
        'name': name,
        'email': email,
        'userRole': userRole,
        'adress': adress
      };
}

Это код, который я использовал в UserPage.dart для редактирования адреса: Сначала я добавляю к

class _UserProfile extends State<UserPage> {
User userr = User();
TextEditingController _userAdressController = TextEditingController();
...
FutureBuilder(
                                future: _getProfileData(),
                                builder: (context, snapshot) {
                                  if (snapshot.connectionState ==
                                      ConnectionState.done) {
                                    _userAdressController.text = userr.adress;
                                  }
                                  return Padding(
                                      padding: const EdgeInsets.all(1.0),
                                      child: Text(
                                        "${userr.adress}",
                                        style: TextStyle(
                                          color: Colors.black,
                                          fontSize: 12,
                                        ),
                                      ));
                                }),
}

 _getProfileData() async {
    final uid = await Provider.of(context).auth.getCurrentUID();
    await Provider.of(context)
        .db
        .collection('userData')
        .document('uid')
        .get()
        .then((result) {
      userr.adress = result.data['adress'];
    });
  }
}

Это то, что я использовал в provider_widget.dart

import 'package: flutter / material.dart'; import 'auth.dart';

class Provider extends InheritedWidget {
  final Authentication auth;
  final db;

  Provider({Key key, Widget child, this.auth, this.db})
      : super(key: key, child: child);

  @override
  bool updateShouldNotify(InheritedWidget oldWidget) {
    return true;
  }

  static Provider of(BuildContext context) =>
      (context.inheritFromWidgetOfExactType(Provider) as Provider);
}

И вот что появляется в моем приложении: enter image description here

This is how my Cloudfirestore looks like введите описание изображения здесь и это Правила:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

  
    match /{document=**} {
      allow read, write: if request.time < timestamp.date(2020, 9, 4);
    }
  }
}
...