animation - 幻灯片过渡很慢
问题描述
我的 senario 是我的图像和屏幕中心的按钮,但我的图像在它们的顶部,所以我使用 stack ,然后 2 秒后我的图像稍微移动到顶部,我的按钮移动到底部。
所以我使用幻灯片过渡将图像稍微移到顶部,将其他按钮移到底部,它可以工作,但即使在发布后的真实设备上也很慢。
有没有解决方案或更好的方法?
提前致谢
我的代码
class StartView extends StatefulWidget {
@override
_StartViewState createState() => _StartViewState();
}
class _StartViewState extends State<StartView> with TickerProviderStateMixin {
bool showOptions = false;
AnimationController controller;
Animation<Offset> offset;
Animation<Offset> offset2;
Animation<Offset> offset3;
bool _isLoadingVisitor = false;
@override
void initState() {
super.initState();
controller =
AnimationController(vsync: this, duration: Duration(seconds: 1));
offset = Tween<Offset>(begin: Offset.zero, end: Offset(0, -.5))
.animate(controller);
offset2 = Tween<Offset>(begin: Offset.zero, end: Offset(0, .8))
.animate(controller);
offset3 = Tween<Offset>(begin: Offset.zero, end: Offset(0, 2))
.animate(controller);
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
controller.dispose();
}
@override
Widget build(BuildContext context) {
ScreenUtil.init(context, width: 376, height: 670, allowFontScaling: false);
Future.microtask(()=>Future.delayed(Duration(seconds: 2), () {
controller.forward();
}));
return SafeArea(
child: Scaffold(
body: Container(
child: Stack(
children: <Widget>[
Align(
alignment: Alignment.center,
child: SlideTransition(
position: offset2,
child: RaisedButton(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5)),
child: Text(
Localization.of(context).trans('login'),
style: TextStyle(
fontSize: ScreenUtil().setSp(20),
fontFamily: 'JFFlatregular'),
),
elevation: 0,
onPressed: login,
),
)),
Align(
alignment: Alignment.center,
child: SlideTransition(
position: offset3,
child: _isLoadingVisitor
? CircularProgressIndicator()
: FlatButton(
child: Text(
Localization.of(context).trans('login_as_visitor'),
style: TextStyle(
fontSize: ScreenUtil().setSp(20),
fontFamily: 'JFFlatregular'),
),
onPressed: loginVisitor,
),
),
),
Align(
alignment: Alignment.center,
child: SlideTransition(
position: offset,
child: Image.asset(
'assets/images/splash.png',
width: ScreenUtil().setWidth(250),
height: ScreenUtil().setHeight(250),
fit: BoxFit.fill,
filterQuality: FilterQuality.high,
),
),
),
],
),
),
),
);
}
}
解决方案
当我调整它的大小时,图像分辨率太高 2040*2040 ,它工作得很好
推荐阅读
- typescript - 创建将类型化数组转换为其第一个元素的类型
- excel - 我可以在单元格不小于或等于日期的情况下进行 COUNTIFS 吗?
- mqtt - 无法将数据发布到我的本地 mqtt 服务器
- racket - 为什么球拍解释器中的“骗局”与 drracket 中的不同?
- javascript - 如何导入可能有语法错误的模块?
- c# - 给定元素时检索 XML“id”属性值
- java - Java - Excel 导入日期和数字
- python - Paramiko TypeError: from_buffer() 无法返回 str 或 unicode 或 bytearray 对象中的原始字符串的地址
- laravel - 完成选择框 Vuetify 行为到文本字段中
- json - Laravel AJAX JSON eturn 数据相关