Firebase Flatter FireStore应用带onTap的过滤器
字符串_currentlySelectedlanguage=“印度” 类_SplitPageState扩展状态{ 最终列表dropdownValueslanguage=[“印度”、“美国”] 小部件dropdownWidgetlanguage(){ 返回下拉按钮( isExpanded:错, 值:_currentlySelectedlanguage, onChanged:(字符串newvalue){ 设置状态(){ _currentlySelectedlanguage=新值; 打印(当前选择的语言); }); }, 项目:\下拉列表值语言 .map((值)=>DropdownMenuItem( 子项:文本(值), 价值:价值, )) .toList(), ); }尝试下面的代码Firebase Flatter FireStore应用带onTap的过滤器,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,字符串_currentlySelectedlanguage=“印度” 类_SplitPageState扩展状态{ 最终列表dropdownValueslanguage=[“印度”、“美国”] 小部件dropdownWidgetlanguage(){ 返回下拉按钮( isExpanded:错, 值:_currentlySelectedlanguage, onChanged:(字符串newvalue){ 设置状态(){ _currentlySelectedlanguage=新值; 打印(当前选择的语
class Code extends StatefulWidget {
@override
_CodeState createState() => _CodeState();
}
String currentLanguage; //updated
class _CodeState extends State<Code> {
@override
Widget build(BuildContext context) {
return Column(
children: [
dropdownWidgetlanguage(),
FutureBuilder<List<DocumentSnapshot>>(
future: getData(_currentlySelectedlanguage),
builder: (context, snapshot) {
if(snapshot.hasData){
return ListView.builder(
itemCount: snapshot.data.length,
shrinkWrap: true,
itemBuilder: (context, index) => snapshot.data[index].data()['name'],);
}else{
return Container();
}
},)
],
);
}
Widget dropdownWidgetlanguage() {
return DropdownButton(
isExpanded: false,
value: _currentlySelectedlanguage,
onChanged: (String newvalue) {
setState(() {
_currentlySelectedlanguage = newvalue;
currentLanguage = newvalue; //updated
});
},
items: _dropdownValueslanguage
.map((value) => DropdownMenuItem(
child: Text(value),
value: value,
))
.toList(),
);
}
String _currentlySelectedlanguage;
final List<String> _dropdownValueslanguage = ["USA", "India"];
Future<List<DocumentSnapshot>> getData(String filter) async {
final firestore = FirebaseFirestore.instance;
QuerySnapshot snapshot = await firestore
.collection('slideshow')
.where("lang", isEqualTo: filter)
.get();
return snapshot.docs;
}
}
类代码扩展StatefulWidget{
@凌驾
_CodeState createState()=>\u CodeState();
}
String currentLanguage;//已更新
类\u代码状态扩展状态{
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
dropdownWidgetlanguage(),
未来建设者(
未来:获取数据(_currentlySelectedlanguage),
生成器:(上下文,快照){
if(snapshot.hasData){
返回ListView.builder(
itemCount:snapshot.data.length,
收缩膜:对,
itemBuilder:(上下文,索引)=>snapshot.data[index].data()['name'],);
}否则{
返回容器();
}
},)
],
);
}
小部件dropdownWidgetlanguage(){
返回下拉按钮(
isExpanded:错,
值:_currentlySelectedlanguage,
onChanged:(字符串newvalue){
设置状态(){
_currentlySelectedlanguage=新值;
currentLanguage=newvalue;//已更新
});
},
项目:\下拉列表值语言
.map((值)=>DropdownMenuItem(
子项:文本(值),
价值:价值,
))
.toList(),
);
}
字符串_currentlySelectedlanguage;
最终列表dropdownValueslanguage=[“美国”、“印度”];
未来getData(字符串筛选器)异步{
final firestore=FirebaseFirestore.instance;
QuerySnapshot快照=等待firestore
.collection(“幻灯片放映”)
。其中(“lang”,isEqualTo:filter)
.get();
返回snapshot.docs;
}
}
class第二类扩展StatefulWidget{
@凌驾
_Class2State createState()=>\u Class2State();
}
类2状态扩展状态{
@凌驾
小部件构建(构建上下文){
返回容器(
子:文本(当前语言),
);
}
}
请您分享一些代码以便我们可以帮助您。Future getData()异步{final firestore=FirebaseFirestore.instance;QuerySnapshot snapshot=Wait firestore.collection('slideshow')。其中(“lang”,isEqualTo:currentlySelectedlanguage)。get();return snapshot.docs;}currentlySelectedlanguage来自我的下拉列表谢谢你的回复,如果没有解决方案,你能告诉我如何传递数据吗?我做了所有不起作用的事情:(你能用下拉代码编辑你的任务吗?谢谢你,先生,但我在项目中没有问题,我想把下拉列表放在另一个页面上,用它来选择其他页面的语言,我的意思是我可以从一个地方改变语言,每一个页面都会改变,你认为有办法传递数据吗anksMake一个全局变量,一旦你改变语言,然后更新该变量,并在所有屏幕中使用该全局变量。我不明白,你能给我写一个例子吗?thankscheck更新代码
class SecondClass extends StatefulWidget {
@override
_Class2State createState() => _Class2State();
}
class _Class2State extends State<SecondClass> {
@override
Widget build(BuildContext context) {
return Container(
child: Text(currentLanguage),
);
}
}