dart - Matrix4 参数在间接传递给 Transform 时表现不同

标签 dart flutter

我遇到了一个非常奇怪的问题。这就像某种类型的混淆?

如果我这样写我的动画,它会按预期工作:

Widget _animatedButtonsBuilder(BuildContext context, LoginState state) {
    final animTarget = state.isPhoneNumberFocused
        ? _controller.lowerBound
        : _controller.upperBound;

    _controller.animateTo(animTarget);

    final double width = MediaQuery.of(context).size.width;
    //final transform = Matrix4.translationValues(_animation.value * width, 0.0, 0.0)..scale(1.0, 1.0-_animation.value, 1.0);

    return AnimatedBuilder(
        animation: _controller,
        builder: (BuildContext context, Widget child) {
          return Transform(
            transform: Matrix4.translationValues(_animation.value * width, 0.0, 0.0)..scale(1.0, 1.0-_animation.value, 1.0),
            child: new RaisedButton(
              child: const Text('Login'),
              color: Color(0xff938065),
              elevation: 4.0,
              splashColor: Colors.blueGrey,
              textColor: Color(0xffffffff),
              onPressed: () {},
          ));
    });
  }

但是如果我取消注释

//final transform = Matrix4.transla...

并将其传递给 transform: 参数,它似乎无法正常工作。

这是怎么回事?

最佳答案

我认为要获得相同的结果,您需要将该行移至生成器中, 因为它会在每次动画进行时执行,而不仅仅是在动画开始时执行。

Widget _animatedButtonsBuilder(BuildContext context, LoginState state) {
    final animTarget = state.isPhoneNumberFocused
        ? _controller.lowerBound
        : _controller.upperBound;

    _controller.animateTo(animTarget);

    final double width = MediaQuery.of(context).size.width;

    return AnimatedBuilder(
        animation: _controller,
        builder: (BuildContext context, Widget child) {
          //final transform = Matrix4.translationValues(_animation.value * width, 0.0, 0.0)..scale(1.0, 1.0-_animation.value, 1.0);

          return Transform(
            transform: Matrix4.translationValues(_animation.value * width, 0.0, 0.0)..scale(1.0, 1.0-_animation.value, 1.0),
            child: new RaisedButton(
              child: const Text('Login'),
              color: Color(0xff938065),
              elevation: 4.0,
              splashColor: Colors.blueGrey,
              textColor: Color(0xffffffff),
              onPressed: () {},
          ));
    });
  }

关于dart - Matrix4 参数在间接传递给 Transform 时表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54996791/

相关文章:

dart - 无法更改 TextField 边框颜色

android - AAPT : error: attribute fastforward_increment (aka aplicationid. dev:fastforward_increment) 未找到

dart - Flutter Bottomsheet Modal 不重新渲染

dart - Flutter中TextField的TextScaleFactor?

firebase - 如何在另一个小部件中获取Firestore数据

listview - 如何使我的列在 Flutter 中可滚动?

dart - Flutter BLoC 模式 - 如何在流事件后导航到另一个屏幕?

dart - 在dart中将元素滚动到底部

dart - 未处理的异常 : PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException : 10: , null)