Flutter步进器插件dm_stepper的使用

Flutter步进器插件dm_stepper的使用

在本教程中,我们将学习如何在Flutter应用中使用dm_stepper插件。dm_stepper是一个功能强大的步进器组件,可以用于引导用户完成一系列步骤或表单。

步进器插件信息




截图

Screen 1 Screen 2

使用步骤

首先,在你的pubspec.yaml文件中添加dm_stepper依赖:

dependencies:
  dm_stepper: ^最新版本号

然后运行flutter pub get来安装依赖。

接下来,我们通过一个完整的示例代码来展示如何使用dm_stepper

完整示例代码

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:dm_stepper/dm_stepper.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Stepper Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Stepper'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Column(
        children: [
          // 竖直方向的步进器
          DMStepper(
            getDMStepList(),
          ),
          const SizedBox(height: 20),
          // 水平方向的步进器
          DMStepper(
            getDMStepList(),
            direction: Axis.horizontal,
          ),
        ],
      ),
    );
  }
}

// 获取步进器列表数据
List<DMStepModel> getDMStepList() {
  return [
    DMStepModel(
      title: '基本详情',
      dmStepIcon: Icons.check,
      dmStepType: DMStepType.done,
      dmStepColorsModel: DMStepColorsModel().copyWith(
        doneIcon: Colors.red,
        doneBackground: Colors.limeAccent,
      ),
    ),
    DMStepModel(
      title: '公司详情',
      dmStepIcon: Icons.check,
      dmStepType: DMStepType.done,
      dmStepColorsModel: DMStepColorsModel().copyWith(
        doneIcon: Colors.red,
        doneBackground: Colors.limeAccent,
      ),
    ),
    DMStepModel(
      title: '订阅计划',
      stepIcon: const DMStepIcon(),
    ),
    DMStepModel(
      title: '支付详情',
      dmStepIcon: CupertinoIcons.money_dollar,
      dmStepType: DMStepType.next,
    ),
  ];
}

// 自定义步进器图标
class DMStepIcon extends StatelessWidget {
  const DMStepIcon({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        crossAxisAlignment: CrossAxisAlignment.center,
        children: [
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Container(
                height: 5,
                width: 5,
                decoration: BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.circular(1),
                ),
              ),
              const SizedBox(width: 1.5),
              Container(
                height: 5,
                width: 5,
                decoration: BoxDecoration(
                  color: const Color.fromRGBO(147, 154, 230, 1),
                  borderRadius: BorderRadius.circular(1),
                ),
              ),
            ],
          ),
          const SizedBox(height: 1.5),
          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              Container(
                height: 5,
                width: 5,
                decoration: BoxDecoration(
                  color: const Color.fromRGBO(147, 154, 230, 1),
                  borderRadius: BorderRadius.circular(1),
                ),
              ),
              const SizedBox(width: 1.5),
              Container(
                height: 5,
                width: 5,
                decoration: BoxDecoration(
                  color: const Color.fromRGBO(147, 154, 230, 1),
                  borderRadius: BorderRadius.circular(1),
                ),
              ),
            ],
          ),
        ],
      ),
    );
  }
}

更多关于Flutter步进器插件dm_stepper的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter步进器插件dm_stepper的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dm_stepper 是一个用于 Flutter 的步进器插件,它可以帮助你在应用中创建一个分步的流程界面。以下是如何使用 dm_stepper 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 dm_stepper 依赖:

dependencies:
  flutter:
    sdk: flutter
  dm_stepper: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在你的 Dart 文件中导入 dm_stepper 包:

import 'package:dm_stepper/dm_stepper.dart';

3. 使用 DmStepper

DmStepper 是一个可以自定义的步进器组件。你可以通过传递 steps 参数来定义步进器的各个步骤。

以下是一个简单的示例:

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

class StepperExample extends StatefulWidget {
  @override
  _StepperExampleState createState() => _StepperExampleState();
}

class _StepperExampleState extends State<StepperExample> {
  int _currentStep = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('DmStepper Example'),
      ),
      body: Center(
        child: DmStepper(
          currentStep: _currentStep,
          onStepContinue: () {
            if (_currentStep < 2) {
              setState(() {
                _currentStep += 1;
              });
            }
          },
          onStepCancel: () {
            if (_currentStep > 0) {
              setState(() {
                _currentStep -= 1;
              });
            }
          },
          steps: [
            DmStep(
              title: Text('Step 1'),
              content: Text('This is the first step.'),
            ),
            DmStep(
              title: Text('Step 2'),
              content: Text('This is the second step.'),
            ),
            DmStep(
              title: Text('Step 3'),
              content: Text('This is the third step.'),
            ),
          ],
        ),
      ),
    );
  }
}

4. 运行应用

现在你可以运行你的 Flutter 应用,并看到一个步进器界面。你可以通过点击“继续”和“取消”按钮来在步骤之间导航。

5. 自定义步进器

DmStepper 提供了多个属性来自定义步进器的外观和行为。例如,你可以设置 type 属性来更改步进器的类型(水平或垂直),或者使用 stepIcon 来为每个步骤设置自定义图标。

DmStepper(
  type: DmStepperType.horizontal,
  currentStep: _currentStep,
  onStepContinue: () {
    if (_currentStep < 2) {
      setState(() {
        _currentStep += 1;
      });
    }
  },
  onStepCancel: () {
    if (_currentStep > 0) {
      setState(() {
        _currentStep -= 1;
      });
    }
  },
  steps: [
    DmStep(
      title: Text('Step 1'),
      content: Text('This is the first step.'),
      icon: Icon(Icons.check),
    ),
    DmStep(
      title: Text('Step 2'),
      content: Text('This is the second step.'),
      icon: Icon(Icons.radio_button_unchecked),
    ),
    DmStep(
      title: Text('Step 3'),
      content: Text('This is the third step.'),
      icon: Icon(Icons.radio_button_unchecked),
    ),
  ],
)

6. 处理步骤完成

你可以在 onStepContinueonStepCancel 回调中处理步骤的完成和取消逻辑。例如,当用户完成所有步骤时,你可以显示一个完成消息或导航到另一个页面。

onStepContinue: () {
  if (_currentStep < 2) {
    setState(() {
      _currentStep += 1;
    });
  } else {
    // All steps completed
    showDialog(
      context: context,
      builder: (context) => AlertDialog(
        title: Text('Completed'),
        content: Text('You have completed all steps.'),
        actions: [
          TextButton(
            onPressed: () => Navigator.pop(context),
            child: Text('OK'),
          ),
        ],
      ),
    );
  }
},
回到顶部