Flutter transform.rotate不旋转动画生成器中的列表项

时间:2020-07-18 06:37:35

标签: android flutter dart

我遵循了本教程,该教程探讨了如何为电影应用创建用户界面

https://www.youtube.com/watch?v=OgSLd2lH1FM&feature=youtu.be

虽然我大部分设计都可以重新创建并添加自己的设置,但在本教程的海报显示侧,我主要是在构建器中遇到了问题,它指定了左右页面焦点之一倾斜15度: The poster view should look like this

transform.rotate部分有效,但仅在用户开始在海报列表中水平滚动之后。 在滚动之前,它看起来像这样: What the carousel looks like before scrolling

这在模拟器和真实设备中均会发生。我也尝试过使用transform.translate来查看是否存在相同的问题,但事实并非如此。

下面是“动画”构建器的代码段。

Widget build(BuildContext context) {
return Container(
  width: MediaQuery.of(context).size.width,
  padding: const EdgeInsets.symmetric(
      vertical: kDefaultPadding / 2, horizontal: 0),
  child: AspectRatio(
    aspectRatio: 0.85,
    child: PageView.builder(
      itemCount: movies.length,
      controller: _pageController // declared PageController type in class//,
      onPageChanged: (value) {
        setState(() {
          // initialPage was initialised with value 1
          initialPage = value;
        });
      },
      itemBuilder: (context, index) => buildMovieCard(index),
    ),
  ),
);

}

AnimatedBuilder调用函数在下面。

 Widget buildMovieCard(int index) => AnimatedBuilder(
  animation: _pageController,
  builder: (context, child) {
    double value = 0;
    if (_pageController.position.haveDimensions) {
      value = index - _pageController.page;
      //0.038 since it time pi gives 7 so 7 rotaitons
       value = (value * 0.038).clamp(-1, 1);
    }
    return  Transform.rotate(
      child: MovieCard(movie: movies[index]),
      angle: math.pi * value,
    );
    
  });

(很抱歉,如果上面的信息不完整,则为..) 告诉我,我对这个问题的看法是否有误

编辑:我尝试进行更多搜索,发现了一个类似的问题。 直到动画为动画生成器播放后,动画才会执行。 我在动画制作器方面没有太多经验,因此,如果我发现有问题,请添加它 Here is the link to the question

我尝试使用SingleTickerProvider和带有.repeat()的动画控制器来连续运行animationBuilder。轮播现在确实会自动出现,但是需要一些时间。

2 个答案:

答案 0 :(得分:0)

您的_pageController.page开始时设置正确吗?

如果在if中打印value会怎样:

if (_pageController.position.haveDimensions) {
  ...
  print(value);
}

(对不起,我没有信誉直接对此帐户的问题发表评论)

答案 1 :(得分:0)

我不太了解代码,但是根据描述,您可能会尝试模拟滚动或查看滚动到底会影响什么,然后尝试实现它。 希望我能帮上忙。