相关疑难解决方法(0)

如何处理不需要的小部件构建?

由于各种原因,有时会build再次调用我的小部件的方法.

我知道这是因为父母更新了.但这会导致不良影响.导致问题的典型情况是使用FutureBuilder这种方式:

@override
Widget build(BuildContext context) {
  return FutureBuilder(
    future: httpCall(),
    builder: (context, snapshot) {
      // create some layout here
    },
  );
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,如果再次调用构建方法,则会触发另一个http请求.这是不受欢迎的.

考虑到这一点,如何处理不需要的构建?有什么方法可以阻止构建调用?

flutter

77
推荐指数
6
解决办法
1万
查看次数

如何减少颤振应用程序中的 Firestore 读取?

注意:我是 flutter、Android 和 Firebase 的新手。

所以,我有一个 logo Maker 应用程序,资产(PNG 图像)如脸、帽子等都保存在firestore数据库中。我的数据库中目前共有 71 个文档。

目前,我使用cached_network_image插件。使用此插件,图像对于单个用户将只读一次。因为从下一次图像将从缓存存储中检索。但是图片标题的检索还是个问题。

尽管如此,对于单个用户,我还是可以阅读大约 100 次!这是我的数据库的架构。

有点明显不同部分的不同集合,一个图像一个文档。 数据库架构

使用 StreamBuilder 检索数据,

代码 代码 2

有什么方法可以通过代码或更改数据库架构或其他方式来减少读取请求的数量?

android firebase flutter google-cloud-firestore

8
推荐指数
1
解决办法
805
查看次数

Flutter Streambuilder 不断重建

我有一个流构建器在监听 Firestore,它有点工作。主要问题是streambuilder不断重建(如果它不花费我额外的读取,那么不用担心,但如果它这样做了,那么这是一个我假设它确实存在的问题)。当主页第一次构建时,当我转到另一个页面时,它会再次构建,当我弹回主页时,它会第三次重建。

代码:

class _RequestsListState extends State<RequestsList> with AutomaticKeepAliveClientMixin {
  final Map<String, List<Post>> posts = {};
  final List<String> postsUserIDs = [];

  @override
  bool get wantKeepAlive => true;

  @override
  Widget build(BuildContext context) {
    super.build(context);

    print('RequestsList');
    User cUser = InheritedUser.of(context).user;

    return StreamBuilder<List<Post>>(
        initialData: cUser.posts,
        stream: APIs().posts.auPostsStream(cUserID: cUser.userID),
        builder: (context, snap) {
          if (snap.hasError) {
            print('AUPostsList.dart StreamBuilder Error: ${snap.error}');
            return null;
          } else {

            print('POSTS LENGTH');
            print(snap.connectionState);
            print(cUser.posts.length);

            this.posts.clear();
            this.postsUserIDs.clear();

            snap.data.forEach((post) {
              if (this.posts[post.user.documentID] == null) {
                this.posts[post.user.documentID] = [post];
              } else { …
Run Code Online (Sandbox Code Playgroud)

firebase flutter google-cloud-firestore stream-builder

8
推荐指数
1
解决办法
3270
查看次数