簡體   English   中英

預期 3 個位置參數,但找到了 2 個

[英]3 positional argument(s) expected, but 2 found

請幫忙。 代碼是使用用戶 ID 從一個屏幕移動到另一個屏幕。 這是一個聊天應用程序。

我收到的錯誤是:預期 3 個位置參數,但找到了 2 個。

我試圖看看問題出在哪里,但似乎找不到。

這是代碼。

Future<void> _moveToChat(selectedUserID) async {
try {
  String chatID;
  SharedPreferences prefs = await SharedPreferences.getInstance();
  String myID = (prefs.get('userID') ?? 'userID');
  if(myID.hashCode > selectedUserID.hashCode) {
    chatID = '${selectedUserID.hashCode} - ${myID.hashCode}';
  }else{
    chatID = '${myID.hashCode} - ${selectedUserID.hashCode}';
  }
  FirebaseFirestore.instance.collection('chat').doc(chatID).set({});
  Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => Chat(myID, selectedUserID))
  );
}catch(e){
  print(e.message);
}

}

這是聊天 class 代碼。

    class Chat extends StatefulWidget {

  Chat(this.myID, this.selectedUserID, this.chatID);

  String myID;
  String selectedUserID;
  String chatID;

  @override
  _ChatState createState() => _ChatState();
}

class _ChatState extends State<Chat> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        title: Container(
          height: 60.0,
          decoration: BoxDecoration(
            image: DecorationImage(
              fit: BoxFit.scaleDown,
              image: AssetImage('assets/images/logo.png'),
            ),
          ),
        ),
      ),
      body: StreamBuilder<QuerySnapshot>(
        stream: FirebaseFirestore.instance
            .collection('Chats')
            .orderBy('createdAt', descending: true)
            .snapshots(),
        builder: (context, snapshot) {
          if (!snapshot.hasData) return Container(
            child: Center(
              child: CircularProgressIndicator(),
            ),
            color: kAccentColor,
          );
          return Text('dd');
        },
      ),
    );
  }
}

在這里你必須通過 3 arguments:

    MaterialPageRoute(builder: (context) => Chat(myID, selectedUserID));

字符串我的ID;

字符串選擇用戶ID;

字符串聊天ID; <- 這個沒有作為第三個位置參數傳遞給 Chat class。

檢查Chat的構造函數:

Chat(this.myID, this.selectedUserID, this.chatID)

如您所見,共有三個 arguments。 但現在讓我們檢查您的實例化:

MaterialPageRoute(builder: (context) => Chat(myID, selectedUserID))

你能發現缺少什么嗎? 第三個參數, chatID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM