如何将传入的变量作为chapterName传入Where子句中?
我不知道我做错了什么,但传入的值似乎不可用,我这样做的方式. 我试着用变量替换字符串. 不允许. 我试过许多替代品,但没有成功. 只有"文本"似乎有效.
抱歉,我不是一个有经验的开发人员,但我试图把它拿出来给一个团队使用.
有什么建议吗?
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:member_shmc_app/screens/home/members/members_admin/admin_member_details.dart';
//New starting point -- need to change to filter by User's Chapter Members ONLY
//Attempt to take HomePage and pass in ChapterName
// ignore: must_be_immutable
class MemberListHome extends StatefulWidget {
MemberListHome({required this.chapterName, super.key});
var chapterName = '';
@override
State<MemberListHome> createState() => _MemberListHomeState();
}
//Works now but need to replace Chapter Name with variable of chapterName
final Query<Map<String, dynamic>> _referenceMemberList = FirebaseFirestore
.instance
.collection('shmc_members')
.where('memberChapter', isEqualTo: 'Gray Ghost');
class _MemberListHomeState extends State<MemberListHome> {
late Stream<QuerySnapshot> _streamMemberItems;
@override
initState() {
super.initState();
_streamMemberItems = _referenceMemberList.snapshots();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("SHMC Chapter Members"),
backgroundColor: const Color.fromARGB(255, 43, 55, 138),
foregroundColor: Colors.white),
body: StreamBuilder<QuerySnapshot>(
stream: _streamMemberItems,
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasError) {
return Center(child: Text(snapshot.error.toString()));
}
if (snapshot.connectionState == ConnectionState.active) {
QuerySnapshot querySnapshot = snapshot.data;
List<QueryDocumentSnapshot> listQueryDocumentSnapshot =
querySnapshot.docs;
return ListView.builder(
itemCount: listQueryDocumentSnapshot.length,
itemBuilder: (context, index) {
QueryDocumentSnapshot document =
listQueryDocumentSnapshot[index];
return MemberListItem(document: document);
});
}
return const Center(child: CircularProgressIndicator());
},
),
);
}
}
class MemberListItem extends StatefulWidget {
const MemberListItem({
super.key,
required this.document,
});
final QueryDocumentSnapshot<Object?> document;
@override
State<MemberListItem> createState() => _MemberListItemState();
}
class _MemberListItemState extends State<MemberListItem> {
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(5.0),
child: ListTile(
tileColor: Colors.white,
minLeadingWidth: 10,
onTap: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => AdminMemberDetails(widget.document.id)));
},
title: Text(widget.document['memberRoadname'] +
' - ' +
widget.document['memberChapter']),
subtitle: Text(widget.document['memberFullName'] +
" - " +
widget.document['memberCellPhone']),
//leading: Image.asset('images/chapters/' + widget.document['chapterLogo']),
),
);
}
}