前面學習了多種方法,現在要學習如何將動畫交錯展示
以下是創建步驟,今天寫的是使文字淡入淡出的交錯動畫
1.導入資源庫跟創建MyApp類
將將AnimatedTextDemo小部件設為應用程序的主頁
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AnimatedTextDemo(),
    );
  }
}
2.創建AnimatedTextDemo類
繼承StatefulWidget的自定義小部件。管理動畫效果的狀態。
class AnimatedTextDemo extends StatefulWidget {
  @override
  _AnimatedTextDemoState createState() => _AnimatedTextDemoState();
}
3.創建AnimatedTextDemoState類:是AnimatedTextDemo的狀態
定義了兩個布林變數 isFirstTextVisible 和 isSecondTextVisible 來控制兩個文本的可見性。
並用toggleTextVisibility 函數用於切換這兩個文本的可見性。
class _AnimatedTextDemoState extends State<AnimatedTextDemo> {
  bool _isFirstTextVisible = true;
  bool _isSecondTextVisible = false;
  void _toggleTextVisibility() {
    setState(() {
      _isFirstTextVisible = !_isFirstTextVisible;
      _isSecondTextVisible = !_isSecondTextVisible;
    });
  }
}
4.創建UI
寫兩個文本,設定觸發按鈕,以實現文本淡入淡出的交錯性。
@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text('文字交錯動畫示例'),
    ),
    body: Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          AnimatedOpacity(
            opacity: _isFirstTextVisible ? 1.0 : 0.0,
            duration: Duration(seconds: 1),
            child: Text(
              'Hello,',
              style: TextStyle(fontSize: 24, color: Colors.blue),
            ),
          ),
          AnimatedOpacity(
            opacity: _isSecondTextVisible ? 1.0 : 0.0,
            duration: Duration(seconds: 1),
            child: Text(
              'Flutter!',
              style: TextStyle(fontSize: 24, color: Colors.red),
            ),
          ),
        ],
      ),
    ),
    floatingActionButton: FloatingActionButton(
      onPressed: _toggleTextVisibility,
      child: Icon(Icons.play_arrow),
    ),
  );
}
完整程式碼
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: AnimatedTextDemo(),
    );
  }
}
class AnimatedTextDemo extends StatefulWidget {
  @override
  _AnimatedTextDemoState createState() => _AnimatedTextDemoState();
}
class _AnimatedTextDemoState extends State<AnimatedTextDemo> {
  bool _isFirstTextVisible = true; // 控制第一個文本的可見性
  bool _isSecondTextVisible = false; // 控制第二個文本的可見性
  void _toggleTextVisibility() {
    // 切換文本的可見性
    setState(() {
      _isFirstTextVisible = !_isFirstTextVisible;
      _isSecondTextVisible = !_isSecondTextVisible;
    });
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('文字交錯動畫示例'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            AnimatedOpacity(
              opacity: _isFirstTextVisible ? 1.0 : 0.0, // 控制第一個文本的不透明度
              duration: Duration(seconds: 1), // 動畫持續時間
              child: Text(
                'Hello,', // 第一個文本的內容
                style: TextStyle(fontSize: 24, color: Colors.blue), // 第一個文本的樣式
              ),
            ),
            AnimatedOpacity(
              opacity: _isSecondTextVisible ? 1.0 : 0.0, // 控制第二個文本的不透明度
              duration: Duration(seconds: 1), // 動畫持續時間
              child: Text(
                'Flutter!', // 第二個文本的內容
                style: TextStyle(fontSize: 24, color: Colors.red), // 第二個文本的樣式
              ),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _toggleTextVisibility, // 按下浮動操作按鈕時執行函數
        child: Icon(Icons.play_arrow), // 浮動操作按鈕的圖標
      ),
    );
  }
}