Flutter步进器控制插件smart_stepper的使用

Flutter步进器控制插件smart_stepper的使用

特性

这个插件帮助你创建一个漂亮的自定义步进器。

预览

使用示例

以下是一个完整的示例,展示了如何在Flutter应用中使用smart_stepper插件。

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

class SmartStepperExample extends StatefulWidget {
  const SmartStepperExample({super.key});

  [@override](/user/override)
  State<SmartStepperExample> createState() => _SmartStepperExampleState();
}

class _SmartStepperExampleState extends State<SmartStepperExample> {
  int currentStep = 3; // 当前步骤
  int totalSteps = 4; // 总步骤数
  int currentStep1 = 2; // 第二个步进器的当前步骤
  int currentStep2 = 1; // 第三个步进器的当前步骤

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.blue,
        title: const Text(
          "Smart Stepper Example",
          style: TextStyle(color: Colors.white),
        ),
      ),
      body: Column(
        children: [
          const SizedBox(height: 12),
          const Text(
            "Example",
            style: TextStyle(color: Colors.black, fontSize: 22),
          ),
          SmartStepper(
            currentStep: currentStep, // 当前步骤
            totalSteps: totalSteps, // 总步骤数
            onStepperTap: (value) {
              setState(() {
                currentStep = value; // 更新当前步骤
              });
            },
          ),
          const SizedBox(height: 24),
          const Text(
            "Example - 1",
            style: TextStyle(color: Colors.black, fontSize: 22),
          ),
          SmartStepper(
            currentStep: currentStep1,
            totalSteps: totalSteps,
            completeStepColor: Colors.orange, // 完成步骤的颜色
            currentStepColor: Colors.red, // 当前步骤的颜色
            inactiveStepColor: Colors.purple, // 未完成步骤的颜色
            borderWidth: 0, // 边框宽度
            onStepperTap: (value) {
              setState(() {
                currentStep1 = value; // 更新当前步骤
              });
            },
          ),
          const SizedBox(height: 24),
          const Text(
            "Example - 2",
            style: TextStyle(color: Colors.black, fontSize: 22),
          ),
          SmartStepper(
            currentStep: currentStep2,
            totalSteps: totalSteps,
            isTextShowing: false, // 是否显示文字
            borderWidth: 0,
            onStepperTap: (value) {
              setState(() {
                currentStep2 = value; // 更新当前步骤
              });
            },
          ),
          const SizedBox(height: 24),
          const Text(
            "Example - 3",
            style: TextStyle(color: Colors.black, fontSize: 22),
          ),
          SmartStepper(
            currentStep: currentStep1,
            totalSteps: totalSteps,
            completeStepColor: Colors.orange,
            currentStepColor: Colors.red,
            inactiveStepColor: Colors.purple,
            completeBorderColor: Colors.yellow, // 完成边框颜色
            currentBorderColor: Colors.green, // 当前边框颜色
            inactiveBorderColor: Colors.cyan, // 未完成边框颜色
            borderWidth: 2, // 边框宽度
            onStepperTap: (value) {
              setState(() {
                currentStep1 = value; // 更新当前步骤
              });
            },
          ),
          const SizedBox(height: 24),
          const Text(
            "Example - 4",
            style: TextStyle(color: Colors.black, fontSize: 22),
          ),
          SmartStepper(
            currentStep: currentStep2,
            totalSteps: totalSteps,
            completeTextColor: Colors.black, // 完成文本颜色
            currentTextColor: Colors.red, // 当前文本颜色
            inactiveTextColor: Colors.blue, // 未完成文本颜色
            borderWidth: 2,
            onStepperTap: (value) {
              setState(() {
                currentStep2 = value; // 更新当前步骤
              });
            },
          ),
          const SizedBox(height: 24),
          const Text(
            "Example - 5",
            style: TextStyle(color: Colors.black, fontSize: 22),
          ),
          SmartStepper(
            currentStep: currentStep,
            totalSteps: totalSteps,
            completeLineColor: Colors.black, // 完成线条颜色
            currentLineColor: Colors.red, // 当前线条颜色
            inactiveLineColor: Colors.blue, // 未完成线条颜色
            lineHeight: 10, // 线条高度
            lineWidth: 50, // 线条宽度
            lineBorderRadius: 12, // 线条圆角半径
            linePadding: const EdgeInsets.symmetric(horizontal: 12), // 线条内边距
            onStepperTap: (value) {
              setState(() {
                currentStep = value; // 更新当前步骤
              });
            },
          ),
          const SizedBox(height: 12),
          const Text(
            "Example - 6",
            style: TextStyle(color: Colors.black, fontSize: 22),
          ),
          SmartStepper(
            currentStep: currentStep1,
            totalSteps: totalSteps,
            stepWidth: 48, // 步骤宽度
            stepHeight: 48, // 步骤高度
            completeStepColor: Colors.orange,
            currentStepColor: Colors.red,
            inactiveStepColor: Colors.purple,
            onStepperTap: (value) {
              setState(() {
                currentStep1 = value; // 更新当前步骤
              });
            },
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter应用中使用smart_stepper插件来控制步进器的一个示例代码。smart_stepper是一个用于创建和管理步进器(Stepper)控件的Flutter插件。它可以帮助开发者更轻松地在应用中实现多步骤表单或流程。

首先,确保你已经在pubspec.yaml文件中添加了smart_stepper依赖:

dependencies:
  flutter:
    sdk: flutter
  smart_stepper: ^最新版本号  # 请替换为实际最新版本号

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

接下来,在你的Flutter应用中,你可以按照以下方式使用smart_stepper

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Smart Stepper Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SmartStepperDemo(),
    );
  }
}

class SmartStepperDemo extends StatefulWidget {
  @override
  _SmartStepperDemoState createState() => _SmartStepperDemoState();
}

class _SmartStepperDemoState extends State<SmartStepperDemo> {
  final _formKey = GlobalKey<FormState>();
  String _name = '';
  String _email = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Smart Stepper Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: SmartStepper(
          steps: [
            Step(
              title: Text('Step 1: Personal Info'),
              content: Form(
                key: _formKey,
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    TextFormField(
                      decoration: InputDecoration(labelText: 'Name'),
                      validator: (value) {
                        if (value == null || value.isEmpty) {
                          return 'Please enter your name';
                        }
                        return null;
                      },
                      onSaved: (value) {
                        _name = value;
                      },
                    ),
                    TextFormField(
                      decoration: InputDecoration(labelText: 'Email'),
                      validator: (value) {
                        if (value == null || value.isEmpty || !value.contains('@')) {
                          return 'Please enter a valid email';
                        }
                        return null;
                      },
                      onSaved: (value) {
                        _email = value;
                      },
                    ),
                  ],
                ),
              ),
            ),
            Step(
              title: Text('Step 2: Confirmation'),
              content: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                  Text('Name: $_name'),
                  SizedBox(height: 16),
                  Text('Email: $_email'),
                ],
              ),
            ),
          ],
          onCompleted: () {
            if (_formKey.currentState!.validate()) {
              _formKey.currentState!.save();
              ScaffoldMessenger.of(context).showSnackBar(
                SnackBar(content: Text('Form submitted successfully')),
              );
            }
          },
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个包含两个步骤的步进器:

  1. Step 1: Personal Info - 包含两个文本表单字段,用于输入姓名和电子邮件。
  2. Step 2: Confirmation - 显示用户输入的姓名和电子邮件。

当用户填写完第一个步骤并点击“继续”按钮时,会验证表单字段。如果验证通过,则进入下一个步骤。当用户完成所有步骤并点击“完成”按钮时,会触发onCompleted回调,在这里我们可以处理表单提交的逻辑。

这个示例展示了如何使用smart_stepper插件来创建一个多步骤表单,并处理用户输入和表单验证。你可以根据具体需求进一步自定义和扩展这个示例。

回到顶部