搜尋套件、儲存庫與 APP 分類

套件詳情v0.1.1

animation_director

AnimationDirector 是一個用於為 Flutter 框架創建美觀流暢動畫的套件

近 30 天下載
103
喜歡數
55
Pub 分數
15

安裝套件

flutter pub add animation_director

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

AnimationDirector 是一個 Flutter 套件,旨在簡化流暢且視覺上吸引人的動畫創建。它提供了一種結構化的方法來管理複雜的動畫序列,同時最大限度地減少樣板程式碼。開發者可以使用直觀的 API 定義和編排動畫,從而更容易建立引人入勝的使用者介面。該套件專注於效能和開發者體驗,使 Flutter 應用中的過渡效果和動態效果更加順暢。

適用情境

  • 建立互動式 UI 元素
  • 建構動畫引導畫面
  • 設計響應式按鈕反饋
  • 使用動態效果實現啟動畫面
  • 動畫列表項目條目
  • 透過流暢的過渡增強載入狀態

主要特色

  • 預定義動畫預設
  • 可鏈式呼叫的動畫序列
  • 狀態之間的平滑插值
  • 輕量且高效
  • 與現有組件的輕鬆整合
  • 對自定義緩動曲線的支援

適合對象

  • 尋求快速動畫實現的Flutter開發者
  • 需要精緻視覺反饋的應用程式
  • 具有複雜動畫工作流程的專案
  • 設計師與開發人員協作進行動態設計
  • 重視一致動畫模式的團隊

使用建議

  • 除了基本範例之外,文件內容有限
  • 無內建的平台特定行為支援
  • 高級用法可能需要額外的學習
  • 未針對極高頻率動畫進行優化
  • 依賴外部相依性以實現完整功能

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

animation_director

A package to create nice and smooth animations for flutter

Introduction

A simple package to build beautiful and smooth animations for flutter framework. By using this package, you don't need to bother yourself with AnimationControllers, AnimationTweens and also timing and of those animations.

Here there are some simple examples of what I've made with this package in 5 minutes for each one.

The following descriptions may sounds complicated but it's pretty simple, sorry for my bad english, I think if you jump to example directory and take a look at the codes, you'll find out it's really easy to use

ActorWidget

Each object on the screen is called an ActorWidget.

ActorWidget has two required properties:

    @required String name;
    @required List<ActorAction> actions;

each ActorAction is an individual animation of the ActorWidget.

All ActorWidgets in your page run simultaneously. All ActorActions inside of an ActorWidget run sequentially, but you can control how much it waits before starts the animation using waitBeforeStart

  // ___________________________________
  ActorWidget(                          |
    name: 'Actor1',                     |
    actions: [                          |
      // ___________                    |
      ActorAction(  |                   |
        ...         |                   |
      ),            |                   |
      ActorAction(  |                   |
        ...         | (Sequentially)    | (Simultaneously)
      ),            |                   |
      ActorAction(  |                   |
        ...         |                   |
      )             |                   |
      // ___________|                   |
  ]),                                   |
  ActorWidget(),                        | 
  ActorWidget(),                        |
  ActorWidget(),                        |
  // ___________________________________|
  

ActorAction Features

Each ActorAction has following features

    List<String> group; // you can define one or multi group for action.
    Function onCompleted;
    Function onStart;
    Duration waitBeforeStart; // the amount of time the current action must wait to start, after the previous action is finished
    ActorPath path;
    ActorPosition position;
    ActorOpacity opacity;
    ActorCharacter character;
    ActorRotation rotation;
    ActorScale scale;

if you want to animate some of your ActorWidgets, you can give a name to the actions of your actor. then start your AnimationDirector by that group. Using this, only ActorWidgets which has the given group animate.
This is useful when you want to trigger an animation manually. see Example Menu3x3.

ActorCharacter

The actor character! your actor is represented by ActorCharacter.

ActorCharacter has the following properties:

    Duration duration;
    Curve curve;
    double width;
    double height;
    Widget child;
    String clipPath; // the string of the clip path
    EdgeInsets padding;
    EdgeInsets margin;
    BoxDecoration decoration;
    BoxDecoration foregroundDecoration;

Note: clipPath type is string! if follows svg codes rule. and for now only supports M, L, A, Q.

In order to generate a path you can use FlutterDev.site Path Creator. Draw your path and copy The Result to the clipPath property

ActorPosition

You can animate the position of Actor using ActorPosition.

ActorPosition has the following properties

    Duration duration;
    Curve curve;
    double top;
    double left;
    double right;
    double bottom;

ActorOpacity

To change the opacity of your Actor.

ActorOpacity has the following properties

    Duration duration;
    Curve curve;
    double opacity;

ActorScale

To change the scale of your Actor.

ActorScale has the following properties

    Duration duration;
    Curve curve;
    double startScale;
    double finishScale;

ActorRotation

To rotate, flip horizontal or vertical your Actor widget, you can use ActorRotation.

ActorRotation has the following properties

    Duration duration;
    Curve curve;
    double rotationTurns;
    Alignment alignment;
    bool clockwise;
    double startTween;
    double verticalFlipTurns;
    double horizontalFlipTurns;

ActorPath

You can draw a path by using ActorPath. and if you define an ActorCharacter along with ActorPath, the character will move along the created path.

To draw your path again use FlutterDev.site Path Creator.

ActorPath has the following properties

    Duration duration;
    Curve curve;
    String path; // the String code of the path
    int traversePercentage; // the percentage of `ActorCharacter` movement along the path
    int startPositionInPercent; // the start position of animation in percent
    bool displayPath; // displays the path on the screen, 
    bool displayProgress; // displays the progress of path filling on the screen
    Offset offset; // you can align the position of ActorCharacter widget on the path
    Paint pathStyle; // style of the path line
    Paint progressStyle; // style of the progress line
    int progressLength; // the length of progress line, the default is as equal as the path
    int progressAnimationRepeat; // the repeat times of progress animation
    bool fadingProgress; // to make the tail of the progress line faded

Path Creator

In order to create paths easily head to FlutterDev.site Path Creator.
Draw your path and copy the generated code from The Result.

Adaptive Size

By default, the generated path is based on fixed numbers of your path and has the following effect

If you want to draw your path to be adaptive to the screen of any device, you need to select Adaptive Width or Adaptive Height or both if you want your path to be fully adaptive. When you select for example Adaptive Width, the drawing-area width will be considered as mobile,tablet,... width so you get following effect with Adaptive Width. (500 for example)

But keep in mind, in both cases, the result may be different on different screen-sizes.

Example

Let's say we want to animate an orange circle from top-center of the screen to the center. Then after 2 seconds, move the circle to the bottom of the page.

The first step is to create our character and position it to top of the page.

  ActorAction(
    position: ActorPosition(top: 0, left: 0, right: 0),
    character: ActorCharacter(
      child: Center(
        child: Container(
          width: 50,
          height: 50,
          decoration: BoxDecoration(
            color: Colors.orangeAccent,
            borderRadius: BorderRadius.circular(50),
          ),
        ),
      )
    ),
  ),

The second step is to move it to the center of the page, so let's add another ActorAction


    ...
    ActorAction(
        position: ActorPosition(
          curve: Curves.elasticOut,
          duration: Duration(milliseconds: 800),
          top: MediaQuery.of(context).size.height / 2 - 25),
    ),
    ...
    

And the final step is to move our circle to the bottom of the page after 2 seconds


    ...
    ActorAction(
        waitBeforeStart: Duration(seconds: 2),
        position: ActorPosition(
          duration: Duration(milliseconds: 800),
          curve: Curves.elasticOut,
          top: MediaQuery.of(context).size.height - 100),
    ),
    ...
    

and you get the following result

所屬分類

原始碼儲存庫

使用此套件的專案

暫無相關資料。