幻灯片过渡非常慢

问题描述 投票:0回答:1

我的senario是我的图像和按钮在屏幕中央,但我的图像在屏幕顶部,所以我使用堆栈,然后两秒钟后我的图像稍微移至顶部,按钮移至底部。

所以我正在使用幻灯片过渡将Image稍微移到顶部,将其他按钮移到底部,虽然它可以工作,但是即使在发布后的真实设备上也非常慢。

有没有解决的方法或更好的方法?

预先感谢

我的代码

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,
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
animation flutter transition slide
1个回答
0
投票

当我调整尺寸时,图像分辨率太高2040 * 2040,效果很好

© www.soinside.com 2019 - 2024. All rights reserved.