Я создаю страницу профиля и не понимаю, почему адрес не сохраняется, и он просто кажется пустым, когда я выхожу со страницы профиля на домашнюю страницу, и почему он сохраняется в облачном хранилище, это Profilepage.dart
User userr = User();
TextEditingController _userAdressController = TextEditingController();
...
FutureBuilder(
future: _getProfileData(context),
builder: (context, snapshot) {
if (snapshot.connectionState ==
ConnectionState.done) {
_userAdressController.text = userr.adress;
}
...
_getProfileData(BuildContext context) 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'];
});
}
}
, и это раздел, который я использую для сохранения данных:
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
child: Text('Save'),
color: Colors.green,
textColor: Colors.white,
onPressed: () async {
userr.adress = _userAdressController.text;
final uid =
await Provider.of(context).auth.getCurrentUID();
await Provider.of(context)
.db
.collection('userData')
.document('uid')
.setData(userr.toJson());
Navigator.of(context).pop();
})
],
),
],
),
),
);
});
}
Это user.dart
import 'package:flutter/material.dart';
class User {
final String uid;
final String name;
final String email;
final String userRole;
String avatarUrl;
String adress;
User(
{this.uid,
this.name,
this.email,
this.userRole,
this.adress,
this.avatarUrl});
User.fromData(Map<String, dynamic> data)
: uid = data['uid'],
name = data['name'],
email = data['email'],
userRole = data['userRole'],
adress = data['adress'],
avatarUrl = data['avatarUrl'];
Map<String, dynamic> toJson() => {
'uid': uid,
'name': name,
'email': email,
'userRole': userRole,
'adress': adress,
'avatarUrl': avatarUrl
};
}
а это Provider.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);
}