中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用Flutter實現動畫效果

發布時間:2021-06-09 17:19:06 來源:億速云 閱讀:323 作者:Leah 欄目:移動開發

本篇文章為大家展示了如何使用Flutter實現動畫效果,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

class Bar {
 Bar(this.height, this.color);
 final double height;
 final Color color;

 static Bar lerp(Bar begin, Bar end, double t) {
  return new Bar(
   lerpDouble(begin.height, end.height, t),
   Color.lerp(begin.color, end.color, t)
  );
 }
}

要在我們的應用程序中使用彩色條形,需要更新BarChartPainter以從Bar獲取條形顏色。

class BarChartPainter extends CustomPainter {
 // ...
 @override
 void paint(Canvas canvas, Size size) {
  final bar = animation.value;
  final paint = new Paint()
   // 從Bar獲取條形顏色
   ..color = bar.color
   ..style = PaintingStyle.fill;
  // ...
 // ...
 }

在main.dart同級目錄下新建color_palette.dart文件,用于獲取顏色。

import 'package:flutter/material.dart';
import 'dart:math';

class ColorPalette {
 static final ColorPalette primary = new ColorPalette(<Color>[
  Colors.blue[400],
  Colors.red[400],
  Colors.green[400],
  Colors.yellow[400],
  Colors.purple[400],
  Colors.orange[400],
  Colors.teal[400],
 ]);

 ColorPalette(List<Color> colors) : _colors = colors {
  // bool isNotEmpty:如果此集合中至少有一個元素,則返回true
  assert(colors.isNotEmpty);
 }

 final List<Color> _colors;

 Color operator [](int index) => _colors[index % length];

 // 返回集合中的元素數量
 int get length => _colors.length;

 /*
 int nextInt(
  int max
 )
 生成一個非負隨機整數,范圍從0到max(包括max)
  */
 Color random(Random random) => this[random.nextInt(length)];
}

我們將把Bar.empty和Bar.random工廠構造函數放在Bar上。

class Bar {
 Bar(this.height, this.color);
 final double height;
 final Color color;

 factory Bar.empty() => new Bar(0.0, Colors.transparent);
 factory Bar.random(Random random) {
  return new Bar(
   random.nextDouble() * 100.0,
   ColorPalette.primary.random(random)
  );
 }

 static Bar lerp(Bar begin, Bar end, double t) {
  return new Bar(
    lerpDouble(begin.height, end.height, t),
    Color.lerp(begin.color, end.color, t)
  );
 }
}

在main.dart中,我們需要創建一個空的Bar和一個隨機的Bar。我們將為前者使用完全透明的顏色,后者將使用隨機顏色。

class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
 // ...
 @override
 void initState() {
  // ...
  tween = new BarTween(new Bar.empty(), new Bar.random(random));
  animation.forward();
 }
 // ...
 void changeData() {
  setState(() {
   tween = new BarTween(
    tween.evaluate(animation),
    new Bar.random(random),
   );
   animation.forward(from: 0.0);
  });
 }
 // ...
}

現在應用程序的效果如下圖:

如何使用Flutter實現動畫效果

上述內容就是如何使用Flutter實現動畫效果,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

云南省| 青神县| 上蔡县| 郸城县| 土默特右旗| 教育| 永安市| 广汉市| 高青县| 拉孜县| 鸡西市| 禹州市| 黑龙江省| 济源市| 青铜峡市| 都江堰市| 郸城县| 泽州县| 商水县| 鹤岗市| 五峰| 仁寿县| 霍林郭勒市| 盐池县| 衡水市| 旬邑县| 遂平县| 阿巴嘎旗| 灵川县| 英超| 九江县| 屏边| 疏勒县| 乃东县| 辽阳县| 鄂尔多斯市| 阳新县| 饶河县| 湘西| 阜平县| 康定县|