【问题标题】:I have errors regarding positional arguments which I dont quite understand. Help please我对我不太理解的位置参数有错误。请帮忙
【发布时间】: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');
    }
  }

请问有什么解决办法?

【问题讨论】:

    标签: flutter tabs provider


    【解决方案1】:

    您在 ProfileState 构造函数中将 this.profileId 作为参数,而在主文件的提供程序中,您没有为构造函数提供所需的参数。这就是我相信您收到此错误的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2012-04-05
      • 2021-01-02
      相关资源
      最近更新 更多