【问题标题】:Flutter FireStore Apply Filter with onTap [closed]Flutter FireStore 使用 onTap 应用过滤器 [关闭]
【发布时间】:2021-05-20 22:58:35
【问题描述】:

String _currentlySelectedlanguage = "印度";

类 _SplitPageState 扩展状态 { 最终列表 _dropdownValueslanguage = ["india", "usa"];

小部件下拉小部件语言(){ 返回下拉按钮( isExpanded:假, 值:_currentlySelectedlanguage, onChanged:(字符串新值){ 设置状态((){ _currentlySelectedlanguage = 新值; 打印(_currentlySelectedlanguage); }); }, 项目:_dropdownValueslanguage .map((值) => DropdownMenuItem( 孩子:文本(值), 价值:价值, )) .toList(), ); }

【问题讨论】:

  • 能否分享一些代码,以便我们为您提供帮助。
  • 未来 getData() async { final firestore = FirebaseFirestore.instance; QuerySnapshot 快照 = await firestore .collection('slideshow') .where("lang", isEqualTo: currentSelectedlanguage) .get();返回快照.docs; }
  • currentSelectedlanguage is From My DropDown
  • 感谢您的回复,如果他们没有解决方案,您能告诉我如何传递数据吗?我做了所有不起作用的方法:(
  • 你能用下拉代码编辑你的任务吗?

标签: firebase flutter google-cloud-firestore


【解决方案1】:

试试下面的代码

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

class SecondClass extends StatefulWidget {
  @override
  _Class2State createState() => _Class2State();
}

class _Class2State extends State<SecondClass> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text(currentLanguage),
    );
  }
}

【讨论】:

  • 谢谢先生,但我在项目中没有问题,我想退出下拉菜单并将其放在另一个页面中,只需将其用于其他页面以选择语言,我的意思是我将能够从一个地方改变语言,每个页面都会改变,你认为有办法传递数据吗?!谢谢
  • 制作一个全局变量,更改语言后更新该变量并在所有屏幕中使用该全局变量
  • 我不明白你能不能帮我写一个例子谢谢
  • 检查更新的代码
猜你喜欢
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
  • 2021-11-29
  • 2020-01-09
  • 1970-01-01
  • 2018-11-21
相关资源
最近更新 更多