Firebase Flatter FireStore应用带onTap的过滤器

Firebase Flatter FireStore应用带onTap的过滤器,firebase,flutter,google-cloud-firestore,Firebase,Flutter,Google Cloud Firestore,字符串_currentlySelectedlanguage=“印度” 类_SplitPageState扩展状态{ 最终列表dropdownValueslanguage=[“印度”、“美国”] 小部件dropdownWidgetlanguage(){ 返回下拉按钮( isExpanded:错, 值:_currentlySelectedlanguage, onChanged:(字符串newvalue){ 设置状态(){ _currentlySelectedlanguage=新值; 打印(当前选择的语

字符串_currentlySelectedlanguage=“印度”

类_SplitPageState扩展状态{ 最终列表dropdownValueslanguage=[“印度”、“美国”]

小部件dropdownWidgetlanguage(){ 返回下拉按钮( isExpanded:错, 值:_currentlySelectedlanguage, onChanged:(字符串newvalue){ 设置状态(){ _currentlySelectedlanguage=新值; 打印(当前选择的语言); }); }, 项目:\下拉列表值语言 .map((值)=>DropdownMenuItem( 子项:文本(值), 价值:价值, )) .toList(), ); }

尝试下面的代码

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),
    );
  }
}