Моя цель - создать страницу редактирования профиля во Flutter, используя шаблон блока.
Я искал лучший / более чистый способ создания страницы профиля пользователя во Flutter с помощью Bloc, но ничего не могу найти.
Прямо сейчас я должен перечислить все поля. Вот пример 2 полей:
final _firstNameController = BehaviorSubject<String>();
final _lastNameController = BehaviorSubject<String>();
Function(String) get firstNameChanged => _firstNameController.sink.add;
Function(String) get lastNameChanged => _lastNameController.sink.add;
Stream<String> get firstNameStream => _firstNameController.stream;
Stream<String> get lastNameStream => _lastNameController.stream;
String get firstName => _firstNameController.value;
String get lastName => _lastNameController.value;
@override
void dispose() {
_firstNameController?.close();
_lastNameController?.close();
}
Есть намного больше полей, и я не хочу иметь весь этот код, если я могу избежать его.
Я бы предпочел иметь только 1 пользовательский блок и обновлять конкретное поле этого пользователя. Я добавил следующее в блок пользователя.
final _userFetcher = BehaviorSubject<User>();
Observable<User> get userStream => _userFetcher.stream;
User get user => _userFetcher.value;
Function(User) get changeUser => _userFetcher.sink.add;
@override
void dispose() async {
await _userFetcher.drain();
_userFetcher.close();
}
Вот пример моей пользовательской модели:
class User {
final Name name;
User.fromJson(Map<String, dynamic> json)
: name = Name.fromJson(json);
Map<String, dynamic> toJson() => {
"first": name.first,
"last": name.last,
};
}
Проблема в том, что я не могу понять, как использовать текстовое поле для редактирования полей «Имя кулака» и «Фамилия» в моей модели «Пользователь».
Возможно ли это, я поступаю неправильно, или я должен придерживаться списка каждого поля по отдельности?