Flutter Sdkは、AnimatedContainerContainerAnimatedContainerContainerAnimatedContainerAnimatedContainerContainerheightwidthContainerheightwidthContainerContainerContainerGestureDetectorContaineronTapContaineronTapコールバック。 以下はそのためのコードです:

ここでやっていることは、変数の値を変更することですcontainerHeightcontainerWidthContainer。 のは、実行して動作を見てみましょう

あなたは、遷移が本質的に突然であり、全く明快ではないことがわかります!P>

今のは、AnimatedContainerContainerAnimatedContainerAnimatedContainerDurationAnimatedContainerDurationプロパティを設定します:更新されたコードを実行し、今回の動作を観察してみましょう

ボイル!!!p>

それはそんなに良く見ています。 より多くの属性を試してみましょう。

色の変化:

アニメーション化している属性の数が増えているので、ブール値を使用してコンテナが現時点でどのような状態であるかを知る方が良 それが展開されているかどうか。 そうすることの利点は、setState()内で処理する属性が少なくなることです。 私たちはちょうどブール値を切り替えるでしょう、それはそれになります。

だから先に行くとブール変数を追加します:

bool isExpanded = false;

また、次のようにウィジェットツリーのAnimatedContainercolorAnimatedContainerheightwidthAnimatedContainerが展開されているかどうか。つまり、次のようにsetState()を更新する必要があります。

最後に次のように変更します。setState()

borderradiusの変更:

他の属性と同様に、実行時にAnimatedContainerborderRadiusBoxDecorationdecoration Just like how you’d set borderRadius for usual Container.

Notice that I’ve moved the color attribute inside BoxDecoration because we can’t specify color and decoration at the same time, just like Container.

This looks great so far. しかし、今のアニメーションは、それだけで二つの値の間に直線的にアニメーション化することを意味し、かなり”バニラ”です。 どのようにアニメーションの曲線やリズムで遊んではどうですか。私のお気に入りの曲線はCurves.bounceOutduration少し増やしてみましょう。

duration: Duration(
milliseconds: 1000,
),
curve: Curves.bounceOut,

As an excercise, I suggest you to also try out other curves.

Similarly, you can also experiment with other parameters of AnimatedContainer like transformmarginpadding etc. You can create complex animations when you combine multiple attributes together. I won’t be explaining these animations in this article for brevity but this is what I was able to achieve :

コメントを残す

メールアドレスが公開されることはありません。