[英]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.