出现在屏幕抖动时从网络加载图像

时间:2019-03-03 15:52:51

标签: flutter

  

当图像出现在屏幕上时加载图像。如果图像容器不在显示区域中,则不会加载,也不会从网络中加载图像。

1 个答案:

答案 0 :(得分:1)

这个问题有点令人困惑,但是我将其解释为您只希望在图像在屏幕上抖动时才加载图像。当不在屏幕上时不加载。这通常称为延迟加载。

在Flutter中,可以使用多个库来实现:

1。

向您的lazy_load_scrollview添加pubspec.yaml依赖项:

dependencies:
  lazy_load_scrollview: 0.0.1

在Dart代码中,import package:lazy_load_scrollview/lazy_load_scrollview.dart然后可以用ListView包装GridViewLazyLoadScrollView。确保添加一个endOfPageListener,当到达列表的底部时,它将接听电话。

@override
Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: LazyLoadScrollView(
        endOfPageListener: () => loadMore(),
        child: ListView.builder(
          itemCount: data.length,
          itemBuilder: (context, position) {
            return Text("Position $position");
          },
        ),
      ),
    );
}

这是由QuirijnGB开发的,并且该库已经here可用。

2

另一方面,您可以使用flutter_pagewise,它也默认实现。 Flutter Pagewise支持ListViewGridViewSliverListViewSliverGridView,我认为GridView可能对您的图像有用。

为此,

将此添加到您的依赖项中

dependencies:
    flutter_pagewise:

然后将其导入您的页面

import 'package:flutter_pagewise/flutter_pagewise.dart';

然后您的列表视图将像这样工作:

PagewiseListView(
  pageSize: 10,
  padding: EdgeInsets.all(15.0),
  itemBuilder: (context, entry, index) {
    // return a widget that displays the entry's data
  },
  pageFuture: (pageIndex) {
    // return a Future that resolves to a list containing the page's data
  }
);

希望对您有帮助!