Flutter步骤导航插件journey_stepper的使用

发布于 1周前 作者 ionicwang 来自 Flutter

Flutter步骤导航插件journey_stepper的使用

Journey Stepper 包允许你在你的 Flutter 应用程序中添加一个基于当前数据的漂亮的时间线。

安装

  1. pubspec.yaml 文件中添加最新版本的包,并运行 dart pub get
dependencies:
  journey_stepper: ^0.0.1
  1. 导入包并在你的 Flutter 应用程序中使用它:
import 'package:journey_stepper/journey_stepper.dart';

特性

  1. Journey Stepper 是一个完全可自定义的、美观且易于使用的组件。
  2. 可以修改各种属性,例如:
    • leftTitle:在左侧显示任何小部件。
    • rightTitle:在右侧显示任何小部件。
    • icon:在垂直进度条上显示图标。
    • iconBackgroundColor:设置图标背景颜色。
    • isLast:如果索引为最后一个,则完成旅程。

使用示例

下面是一个完整的示例,展示了如何在 Flutter 应用程序中使用 journey_stepper 包。

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.red),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Journey 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(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
        centerTitle: true,
      ),
      body: ListView.builder(
        itemCount: 5,
        shrinkWrap: true,
        padding: const EdgeInsets.symmetric(vertical: 20),
        itemBuilder: (context, index) {
          return JourneyStepper(
            leftTitle: const Column(
              crossAxisAlignment: CrossAxisAlignment.end,
              children: [
                Text(
                  "支付",
                  style: TextStyle(
                    fontSize: 14,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                Text(
                  "我们已收到您的款项",
                  style: TextStyle(
                    fontSize: 12,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                Text(
                  "2023年5月17日, 下午3:56",
                  style: TextStyle(
                    fontSize: 12,
                    fontWeight: FontWeight.bold,
                  ),
                )
              ],
            ),
            rightTitle: const Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text(
                  "已收到",
                  style: TextStyle(
                    fontSize: 14,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                Text(
                  "我们已收到您的款项",
                  style: TextStyle(
                    fontSize: 12,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                Text(
                  "2023年5月18日, 下午3:56",
                  style: TextStyle(
                    fontSize: 12,
                    fontWeight: FontWeight.bold,
                  ),
                )
              ],
            ),
            icon: Icons.add,
            iconBackgroundColor: Colors.green,
            isLast: index == 4,
          );
        },
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter中使用journey_stepper插件来实现步骤导航的一个基本示例。journey_stepper是一个用于创建步骤导航界面的Flutter插件,它允许你创建多步骤的流程,并让用户逐步完成。

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

dependencies:
  flutter:
    sdk: flutter
  journey_stepper: ^x.y.z  # 替换为最新版本号

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

接下来,在你的Flutter项目中创建一个包含步骤导航的页面。以下是一个完整的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Journey Stepper Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Journey Stepper Demo'),
        ),
        body: JourneyStepperDemo(),
      ),
    );
  }
}

class JourneyStepperDemo extends StatefulWidget {
  @override
  _JourneyStepperDemoState createState() => _JourneyStepperDemoState();
}

class _JourneyStepperDemoState extends State<JourneyStepperDemo> {
  final stepperController = JourneyStepperController();

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text(
            'Journey Stepper Example',
            style: TextStyle(fontSize: 24),
          ),
          SizedBox(height: 24),
          Expanded(
            child: JourneyStepper(
              controller: stepperController,
              steps: [
                JourneyStep(
                  title: 'Step 1: Introduction',
                  content: Text(
                    'This is the introduction step. Click next to continue.',
                  ),
                  actions: [
                    JourneyStepAction(
                      title: 'Next',
                      onPressed: () {
                        stepperController.nextStep();
                      },
                    ),
                  ],
                ),
                JourneyStep(
                  title: 'Step 2: Details',
                  content: Text(
                    'Enter your details here. Click next to continue.',
                  ),
                  actions: [
                    JourneyStepAction(
                      title: 'Previous',
                      onPressed: () {
                        stepperController.previousStep();
                      },
                    ),
                    JourneyStepAction(
                      title: 'Next',
                      onPressed: () {
                        stepperController.nextStep();
                      },
                    ),
                  ],
                ),
                JourneyStep(
                  title: 'Step 3: Confirmation',
                  content: Text(
                    'Please confirm your details. Click done to finish.',
                  ),
                  actions: [
                    JourneyStepAction(
                      title: 'Previous',
                      onPressed: () {
                        stepperController.previousStep();
                      },
                    ),
                    JourneyStepAction(
                      title: 'Done',
                      onPressed: () {
                        // Handle the done action, e.g., navigate to another screen
                        print('Stepper completed!');
                      },
                      isPrimary: true,
                    ),
                  ],
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

在这个示例中,我们创建了一个包含三个步骤的JourneyStepper

  1. Step 1: Introduction - 只有一个“Next”按钮,用于导航到下一个步骤。
  2. Step 2: Details - 包含“Previous”和“Next”按钮,允许用户导航到前一个或下一个步骤。
  3. Step 3: Confirmation - 包含“Previous”和“Done”按钮,“Done”按钮用于完成步骤导航流程。

JourneyStepperController用于控制步骤导航,如前进到下一个步骤或返回到上一个步骤。

你可以根据实际需求修改步骤的内容和动作。这个示例提供了一个基本框架,展示了如何在Flutter应用中使用journey_stepper插件来实现步骤导航。

回到顶部