我使用 PageView.Builder() 来构建由基本文本小部件数组提供的小部件。但在调试模式下,动画感觉非常滞后。在发布或分析模式下,动画仍然滞后,但少了很多。有什么方法可以完全消除使用PageView时的动画滞后现象。
这是我的代码,
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: pageView(),
);
}
}
class pageView extends StatelessWidget {
var color = [
Colors.white,
Colors.lightBlue,
Colors.lightGreen,
Colors.limeAccent
];
PageController controller = PageController();
@override
Widget build(BuildContext context) {
return PageView.builder(
itemCount: 5,
controller: PageController(initialPage: 1),
itemBuilder: (BuildContext context, int itemIndex) {
return pageProvider(color[itemIndex]);
},
);
}
}
class pageProvider extends StatelessWidget {
Color color;
pageProvider(this.color);
Text fillText() {
var str = "";
for (int i = 0; i < 1000; i++) {
str += (" " + 'allan $i');
if (i % 10 == 0) {
str += '\n';
}
}
return Text(str);
}
Widget build(BuildContext context) {
return Container(color: color, child: fillText());
}
}
这是我的分析图的链接。我在配备 6 GB RAM 和 snapdragon 636 以及一些不错的 GPU 的 Android 手机上完成了此分析。关联:https://drive.google.com/file/d/1khbhKQttVXbdHf0_z1b1iPA11BDOcmdW/view?usp=sharing
为什么不尝试按照此处所示预热 Skia 发动机:着色器编译卡顿因为这很可能是大多数人面临的问题。
引用文档:
如果您的移动应用程序上的动画看起来很卡顿,但仅在第一次运行时出现,这可能是由于着色器编译造成的。存在着色器编译卡顿的决定性证据是在启用了 --trace-skia 的跟踪中看到 GrGLProgramBuilder::finalize。
要预编译着色器代码,请运行
flutter run --profile --cache-sksl --purge-persistent-cache
使用应用程序来根据需要触发尽可能多的动画;特别是那些有编译卡顿的情况。
在 flutter run 的命令行中按 M 将捕获的 SkSL 着色器写入名为 flutter_01.sksl.json 的文件中。为了获得最佳结果,请在实际的 iOS 设备上捕获 SkSL 着色器。在模拟器上捕获的着色器不太可能在实际硬件上正常工作。
根据需要使用以下内容构建具有 SkSL 预热的应用程序:
flutter build ios --bundle-sksl-path flutter_01.sksl.json
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)