gpt4 book ai didi

dart - 如何知道用户是否看到了 flutter 图像

转载 作者:IT老高 更新时间:2023-10-28 12:39:14 26 4
gpt4 key购买 nike

我在可滚动屏幕中有一个 Image 组件。刚开屏时看不到图片,需要向下滚动才能看到。

如何确保图像在用户滚动到该图像后完全被用户看到?我想统计用户的形象印象。

你是如何在 Flutter 中实现这一点的?

最佳答案

我没有太多关于您的代码的信息,所以这就是我解决它的方法。仅当图像在屏幕上完全可见时才会计算展示次数,您可以使用 _count = 表达式进行更改。我为 Image 使用了简单的 Container

先看看这个截图。

enter image description here


代码

void main() => runApp(MaterialApp(home: HomePage()),);

class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
ScrollController _scrollController;
double _heightListTile = 56, _heightContainer = 200, _oldOffset = 0, _heightBox, _initialAdd;
int _initialCount, _count, _previousCount = 0, _itemsInList = 4;

@override
void initState() {
super.initState();
_heightBox = ((_itemsInList) * _heightListTile) + _heightContainer;
_scrollController = ScrollController();
_scrollController.addListener(() {
double offset = _scrollController.offset;
if (offset >= _oldOffset) {
_oldOffset = offset;
_count = _initialCount + (offset + _initialAdd) ~/ _heightBox;
if (_count != _previousCount) setState(() {});
_previousCount = _count;
}
});

Timer.run(() {
bool isIos = Theme.of(context).platform == TargetPlatform.iOS;
var screenHeight = MediaQuery.of(context).size.height - (isIos ? 100 : 80); // for non notches phone use 76 instead of 100 (it's the height of status and navigation bar)
_initialCount = screenHeight ~/ _heightBox;
_initialAdd = screenHeight % _heightBox;
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(_count == null ? "Let's count" : "Images shown = ${_count}")),
body: ListView.builder(
itemCount: 100,
controller: _scrollController,
itemBuilder: (context, index) {
if (index == 0) return Container();

if (index != 0 && index % (_itemsInList + 1) == 0) {
return Container(
height: _heightContainer,
alignment: Alignment.center,
color: Colors.blue[(index * 20) % 1000],
child: Text("Image #${(index + 1) ~/ 5}"),
);
}

return SizedBox(height: _heightListTile, child: ListTile(title: Text("Item ${index}")));
},
),
);
}
}

关于dart - 如何知道用户是否看到了 flutter 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55358150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com