📜  在警报对话框中颤动单选按钮 - Dart (1)

📅  最后修改于: 2023-12-03 14:51:33.622000             🧑  作者: Mango

在警报对话框中颤动单选按钮 - Dart

本文将介绍如何在 Dart 编程语言中创建一个简单的警报对话框,并在其中添加一个颤动的单选按钮。

1. 引入依赖库

pubspec.yaml 文件中添加 flutter/material.dart 依赖库:

dependencies:
  flutter:
    sdk: flutter
  flutter/material.dart

然后运行 flutter packages get 命令获取依赖。

2. 创建警报对话框

在 Dart 文件中创建一个 StatefulWidget 类,并实现一个 RaisedButton,点击按钮后显示警报对话框。

import 'package:flutter/material.dart';

class AlertWithShakingRadioButton extends StatefulWidget {
  @override
  _AlertWithShakingRadioButtonState createState() => _AlertWithShakingRadioButtonState();
}

class _AlertWithShakingRadioButtonState extends State<AlertWithShakingRadioButton> {
  @override
  Widget build(BuildContext context) {
    return RaisedButton(
      onPressed: () {
        showDialog(
          context: context,
          builder: (BuildContext context) {
            return AlertDialog(
              title: Text('警报对话框'),
              content: SingleChildScrollView(
                child: Column(
                  children: <Widget>[
                    // 在这里添加颤动的单选按钮
                    ShakeableRadioButton(),
                  ],
                ),
              ),
              actions: <Widget>[
                FlatButton(
                  child: Text('关闭'),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
              ],
            );
          },
        );
      },
      child: Text('显示警报对话框'),
    );
  }
}
3. 创建颤动的单选按钮

为了实现一个颤动的单选按钮,我们将创建一个 StatefulWidget 类。它包含一个 RadioListTile,通过动画来使其颤动。

import 'package:flutter/material.dart';

class ShakeableRadioButton extends StatefulWidget {
  @override
  _ShakeableRadioButtonState createState() => _ShakeableRadioButtonState();
}

class _ShakeableRadioButtonState extends State<ShakeableRadioButton>
    with SingleTickerProviderStateMixin {
  late AnimationController _animationController;
  late Animation<double> _animation;

  @override
  void initState() {
    super.initState();
    _animationController = AnimationController(
      vsync: this,
      duration: Duration(milliseconds: 500),
    )..repeat(reverse: true);
    _animation = Tween<double>(begin: 0.0, end: 5.0).animate(
      CurvedAnimation(
        parent: _animationController,
        curve: Curves.linear,
      ),
    );
  }

  @override
  void dispose() {
    _animationController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: AnimatedBuilder(
        animation: _animation,
        builder: (BuildContext context, Widget? child) {
          return Transform.translate(
            offset: Offset(_animation.value, 0.0),
            child: RadioListTile(
              value: false,
              groupValue: false,
              onChanged: (bool? value) {},
              title: Text('选项'),
            ),
          );
        },
      ),
    );
  }
}
4. 显示警报对话框

在你的组件中使用 AlertWithShakingRadioButton 来显示警报对话框和颤动的单选按钮。

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '颤动单选按钮',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('颤动单选按钮'),
        ),
        body: Center(
          child: AlertWithShakingRadioButton(),
        ),
      ),
    );
  }
}

通过运行上述代码,你将在你的应用程序中看到一个按钮。点击该按钮会显示一个警报对话框,该对话框中包含一个可以颤动的单选按钮。

注意:上述代码为 Dart 语言,并使用 Flutter 框架。若要运行此示例,请确保您的开发环境已安装 Flutter SDK。去 https://flutter.dev/ 下载并安装 Flutter SDK。

将以上代码保存为 main.dart,然后通过运行 flutter run 命令来启动应用程序。