Flutter线性步骤指示器插件linear_step_indicator的使用

Flutter线性步骤指示器插件linear_step_indicator的使用

安装

在你的Flutter项目的pubspec.yaml文件中,添加以下依赖项:

dependencies:
  linear_step_indicator: ^1.0.0+3

然后,在你的项目中导入该包:

import 'package:linear_step_indicator/linear_step_indicator.dart';

入门指南

示例

完整线性步骤指示器

FullLinearStepIndicator(
  steps: 5, // 设置步骤总数
  lineHeight: 3.5, // 设置线的高度
  activeNodeColor: Colors.brown, // 激活节点的颜色
  inActiveNodeColor: const Color(0xffd1d5d8), // 非激活节点的颜色
  activeLineColor: Colors.brown, // 激活线的颜色
  inActiveLineColor: const Color(0xffd1d5d8), // 非激活线的颜色
  controller: pageController, // 页面控制器
  labels: List<String>.generate(5, (index) => "Step ${index + 1}"), // 步骤标签
  complete: () {
    // 当所有步骤完成时触发的逻辑
    return Future.value(true);
  },
)

简化线性步骤指示器

LinearStepIndicator(
  steps: 3, // 设置步骤总数
  controller: _pageController, // 页面控制器
  labels: List<String>.generate(3, (index) => "Step ${index + 1}"), // 步骤标签
  complete: () {
    // 当所有步骤完成时触发的逻辑
    return Future.value(true);
  },
)

带页面视图的线性步骤指示器

StepIndicatorPageView(
  steps: 3, // 设置步骤总数
  indicatorPosition: IndicatorPosition.top, // 指示器位置
  labels: List<String>.generate(3, (index) => "Step ${index + 1}"), // 步骤标签
  controller: _pageController, // 页面控制器
  complete: () {
    // 当所有步骤完成时触发的逻辑
    return Future.value(true);
  },
  children: List<Widget>.generate(
    3,
    (index) => Container(
      color: Color(0xffffffff), // 页面背景颜色
      child: Center(
        child: Text(
          "Page ${index + 1}", // 页面标题
          style: TextStyle(
            fontSize: 24,
            fontWeight: FontWeight.w500,
          ),
        ),
      ),
    ),
  ),
)

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

1 回复

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


当然,以下是一个关于如何在Flutter中使用linear_step_indicator插件的示例代码。这个插件允许你创建一个线性的步骤指示器,非常适合用于多步骤表单或者引导用户完成一系列任务的场景。

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

dependencies:
  flutter:
    sdk: flutter
  linear_step_indicator: ^2.0.0  # 请确保版本号是最新的

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

接下来是一个简单的示例代码,展示了如何使用linear_step_indicator

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Linear Step Indicator Example'),
        ),
        body: StepIndicatorExample(),
      ),
    );
  }
}

class StepIndicatorExample extends StatefulWidget {
  @override
  _StepIndicatorExampleState createState() => _StepIndicatorExampleState();
}

class _StepIndicatorExampleState extends State<StepIndicatorExample> {
  int currentStep = 0;

  List<Step> steps = [
    Step(
      title: Text('Step 1: Introduction'),
      content: Text('This is the introduction step.'),
      isActive: currentStep >= 0,
    ),
    Step(
      title: Text('Step 2: Details'),
      content: Text('Enter your details here.'),
      isActive: currentStep >= 1,
    ),
    Step(
      title: Text('Step 3: Confirmation'),
      content: Text('Review and confirm your details.'),
      isActive: currentStep >= 2,
    ),
  ];

  void onStepTapped(int index) {
    setState(() {
      currentStep = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          LinearStepIndicator(
            currentStep: currentStep,
            stepCount: steps.length,
            onStepTapped: (index) => onStepTapped(index),
            stepSize: 40.0,
            dotBuilder: (context, index) => Container(
              width: 20.0,
              height: 20.0,
              decoration: BoxDecoration(
                shape: BoxShape.circle,
                color: (index == currentStep) ? Colors.blue : Colors.grey,
              ),
            ),
            lineBuilder: (context, index) => Container(
              height: 4.0,
              decoration: BoxDecoration(
                color: (index == currentStep || index == currentStep - 1) ? Colors.blue.withOpacity(0.5) : Colors.grey.withOpacity(0.5),
              ),
            ),
            activeStepColor: Colors.blue,
            completeStepColor: Colors.green,
            disabledStepColor: Colors.grey,
          ),
          SizedBox(height: 20),
          Expanded(
            child: SingleChildScrollView(
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                children: steps.map((step) => Offstage(
                  offstage: currentStep < steps.indexOf(step),
                  child: Padding(
                    padding: const EdgeInsets.symmetric(vertical: 16.0),
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Text(
                          step.title ?? '',
                          style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
                        ),
                        SizedBox(height: 8),
                        Text(
                          step.content ?? '',
                          style: TextStyle(fontSize: 16),
                        ),
                      ],
                    ),
                  ),
                )).toList(),
              ),
            ),
          ),
        ],
      ),
    );
  }
}

代码解释

  1. 依赖添加:在pubspec.yaml文件中添加了linear_step_indicator依赖。
  2. 创建主应用MyApp是主应用类,它设置了应用的基本结构。
  3. 步骤指示器示例StepIndicatorExample是一个有状态的Widget,它管理步骤的当前状态。
  4. 步骤定义steps列表包含了三个步骤,每个步骤都有一个标题和内容。
  5. 步骤点击处理onStepTapped方法更新当前步骤。
  6. 线性步骤指示器LinearStepIndicator组件显示了步骤指示器,并允许用户点击步骤来导航。
  7. 步骤内容显示:使用Offstage组件根据当前步骤显示或隐藏步骤内容。

这个示例展示了如何使用linear_step_indicator插件来创建一个简单的线性步骤指示器,并处理用户点击步骤的交互。你可以根据需要进一步自定义和扩展这个示例。

回到顶部