flutter - Flutter - ListView 动画 - 增加最明显/最集中的项目的大小?
问题描述
是的,基本上标题说明了一切。我想看看哪个项目最集中,然后增加它的大小。这是我编写的代码,但它在性能方面存在一些巨大问题:
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:tastie/models/HomeFeed.dart';
import 'package:tastie/models/Restaurant.dart';
import 'package:visibility_detector/visibility_detector.dart';
import 'restaurant_preview.dart';
class Home extends StatelessWidget {
Home(this.feed);
final HomeFeed feed;
@override
Widget build(BuildContext context) {
double visible = 0;
return ListView(
scrollDirection: Axis.horizontal,
children: [
for (Restaurant resto in feed.recents)
(_restoprev(context, resto, visible)),
],
);
}
Widget _restoprev(BuildContext context, Restaurant resto, double visible) {
GlobalKey _key = GlobalKey();
RestaurantPreview restopreview = RestaurantPreview(context, resto, key: _key);
return Center(
child: Card(
clipBehavior: Clip.antiAlias,
child: VisibilityDetector(
key: Key(resto.id + Random().nextInt(10000).toString()),
onVisibilityChanged: (VisibilityInfo info) {
if (info.visibleFraction > visible) {
final RestaurantPreviewState previewState = _key.currentState;
previewState.update(true);
} else {
final RestaurantPreviewState previewState = _key.currentState;
previewState.update(true);
}
},
child: restopreview,
),
),
);
}
}
但是这段代码不起作用,因为它与平滑相反,它落后并且影响了多个小部件。所以我的问题是如何检测哪个视图最受关注以及如何扩展它?还有另一种方法可以改变餐厅的状态,因为我读到 GlobalKey 仅用于调试。也许使用 ObjectKey?
解决方案
这个问题的答案会很长,幸运的是有一个视频描述了如何使用 ListView 控制器进行播放。视频很长,但我建议您全部观看,但是您感兴趣的部分在 9 分钟后开始。这里的链接:https ://www.youtube.com/watch?v=Cn6VCTaHB-k&t=326s
推荐阅读
- python - 如何在 keras/tensorflow 中将图像拆分为补丁/子图像?
- javascript - jQuery .load() 不让我填写输入文本
- python - 如何让所有 ResNet50 层都出现在 model.summary 中?
- flutter - 读取 wav 音频文件并在 dart 和 flutter 中获取与时间相关的幅度数据以进行绘图
- firebase - 如何在firebase中更新url img
- python - bisect 中的 insort_left 和 insort_right 有什么区别?
- vaadin14 - 使 SplitLayout 位置在选项卡之间保持粘性
- node.js - 使用 Socket.io 在 React Native 移动应用程序中不起作用
- python - 在 Python 中使用 Deep Zoom 更改缩放级别
- json - 在由模式分隔的多个部分中剪切一条线,读取和重写 .json 文件