首页 > 解决方案 > 幻灯片过渡很慢

问题描述

我的 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,
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

标签: animationfluttertransitionslide

解决方案


当我调整它的大小时,图像分辨率太高 2040*2040 ,它工作得很好


推荐阅读