【发布时间】:2021-06-09 15:07:45
【问题描述】:
我正在开发一个社区应用程序,该应用程序在底栏上有一系列选项卡。我已经能够实现主要代码,并且所有选项卡都在工作,除了最后一个。它旨在在点击时显示用户个人资料,但由于位置参数而出现错误,我无法完全理解解决方案。这是给我错误的代码(从我的 main.dart 文件中提取):
providers: [
ChangeNotifierProvider<AppState>(create: (_) => AppState()),
ChangeNotifierProvider<AuthState>(create: (_) => AuthState()),
ChangeNotifierProvider<FeedState>(create: (_) => FeedState()),
ChangeNotifierProvider<ChatState>(create: (_) => ChatState()),
ChangeNotifierProvider<SearchState>(create: (_) => SearchState()),
ChangeNotifierProvider<NotificationState>(
create: (_) => NotificationState()),
***ChangeNotifierProvider<ProfileState>(create: (_) => ProfileState()),***
],
我在最后一行得到错误:预期有 1 个位置参数,但找到了 0 个。 尝试添加缺少的参数。
这是我认为最相关的 Profile State 代码的一部分:
import 'package:firebase_database/firebase_database.dart' as dabase;
class ProfileState extends ChangeNotifier {
ProfileState(this.profileId) {
databaseInit();
userId = FirebaseAuth.instance.currentUser.uid;
_getloggedInUserProfile(userId);
_getProfileUser(profileId);
}
/// This is the id of user who is logegd into the app.
String userId;
/// Profile data of logged in user.
UserModel _userModel;
UserModel get userModel => _userModel;
dabase.Query _profileQuery;
StreamSubscription<Event> profileSubscription;
/// This is the id of user whose profile is open.
final String profileId;
/// Profile data of user whose profile is open.
UserModel _profileUserModel;
UserModel get profileUserModel => _profileUserModel;
bool _isBusy = true;
bool get isbusy => _isBusy;
set loading(bool value) {
_isBusy = value;
notifyListeners();
}
databaseInit() {
try {
if (_profileQuery == null) {
_profileQuery = kDatabase.child("profile").child(profileId);
profileSubscription = _profileQuery.onValue.listen(_onProfileChanged);
}
} catch (error) {
cprint(error, errorIn: 'databaseInit');
}
}
bool get isMyProfile => profileId == userId;
/// Fetch profile of logged in user
void _getloggedInUserProfile(String userId) async {
kDatabase
.child("profile")
.child(userId)
.once()
.then((DataSnapshot snapshot) {
if (snapshot.value != null) {
var map = snapshot.value;
if (map != null) {
_userModel = UserModel.fromJson(map);
}
}
});
}
/// Fetch profile data of user whoose profile is opened
void _getProfileUser(String userProfileId) {
assert(userProfileId != null);
try {
loading = true;
kDatabase
.child("profile")
.child(userProfileId)
.once()
.then((DataSnapshot snapshot) {
if (snapshot.value != null) {
var map = snapshot.value;
if (map != null) {
_profileUserModel = UserModel.fromJson(map);
Utility.logEvent('get_profile');
}
}
loading = false;
});
} catch (error) {
loading = false;
cprint(error, errorIn: 'getProfileUser');
}
}
请问有什么解决办法?
【问题讨论】: