91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

如何使用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

榆社县| 蓝山县| 台东县| 广丰县| 上饶市| 保德县| 噶尔县| 南阳市| 巴楚县| 晋江市| 平陆县| 溆浦县| 永川市| 沙河市| 汝州市| 全州县| 曲靖市| 上思县| 汤阴县| 连城县| 宜兴市| 信阳市| 常宁市| 天台县| 轮台县| 水城县| 邳州市| 迁安市| 凤山县| 朔州市| 璧山县| 广西| 德保县| 海林市| 天全县| 芦山县| 辽阳市| 商丘市| 资阳市| 周口市| 工布江达县|