首页 > 解决方案 > 通过新的 orderby 字符串更新列表 flutter firestore 列表

问题描述

我想在任何类型的体系结构中通过单击带有分页的按钮来更新列表的 orderby 尝试 setstate 字符串,但不会通过新的 order by 重新加载列表。

String? query = 'id';

class Model extends StatefulWidget {
  @override
  _ModelState createState() => _ModelState();
}

class _ModelState extends State<Model> {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView(
        children: <Widget>[
          TextButton(
            onPressed: () {
              setState(() {
                query = 'price';
              });
            },
            child: Text('data'),
          ),
          PaginateFirestore(
            physics: NeverScrollableScrollPhysics(),
            shrinkWrap: true,
            itemBuilderType: PaginateBuilderType.listView,
            itemBuilder: (index, context, documentSnapshot) {
              final data = documentSnapshot.data() as Map?;
              return MainComponent(title: data == null ? 'Error' : data['id']);
            },
            // orderBy is compulsory to enable pagination
            query:
                FirebaseFirestore.instance.collection('phones').orderBy(query.toString()),
            // to fetch real-time data
            isLive: false,
          ),
        ],
      ),
    );
  }
}

标签: listfluttergoogle-cloud-firestore

解决方案


添加一个键PaginateFirestore,这应该会触发PaginateFirestore小部件的重绘。

PaginateFirestore(
key: ValueKey(query) // For Example
...
)

您可以在此处阅读有关密钥的更多信息


推荐阅读