【问题标题】:implement Stepper Widget with Flutter Form Builder Package使用 Flutter Form Builder Package 实现 Stepper Widget
【发布时间】:2021-05-05 10:54:11
【问题描述】:

任何使用 Stepper Widgetflutter form builder package 的人,我想看看一个示例代码如何实现它并使用 validation ,先谢谢了???

【问题讨论】:

    标签: flutter dart flutter-dependencies flutter-packages flutter-form-builder


    【解决方案1】:

    您可以使用以下链接作为参考,您可以在其中查看 Stepper 水平和垂直两者。

    https://developer.school/flutter-how-to-use-the-stepper-widget/

    以下是结果不足的屏幕:

    【讨论】:

    • 这不是用flutter form builder实现的,但没关系
    【解决方案2】:

    【讨论】:

    • 它不是用flutter form builder包实现的
    【解决方案3】:

    您可以执行以下操作:

    import "package:flutter/material.dart";
    import 'package:flutter_widgets/const/_const.dart';
    
    class StepperPage extends StatefulWidget {
      @override
      _StepperState createState() => _StepperState();
    }
    
    class _StepperState extends State<StepperPage> {
      var _index = 0;
    
      Widget _simpleStep() => Container(
            color: RED,
            child: Stepper(
              steps: [
                Step(
                  title: Text("Start"),
                  content: Text("Before starting, we should create a page."),
                ),
                Step(
                  title: Text("Constructor"),
                  content: Text("Let's look at its construtor."),
                ),
              ],
            ),
          );
    
      Widget _steps() => Container(
            margin: EdgeInsets.only(top: 10),
            color: GREEN,
            child: Stepper(
              steps: [
                Step(
                  title: Text("First"),
                  subtitle: Text("This is our first article"),
                  content: Text(
                      "In this article, I will tell you how to create a page."),
                ),
                Step(
                    title: Text("Second"),
                    subtitle: Text("Constructor"),
                    content: Text("Let's look at its construtor."),
                    state: StepState.editing,
                    isActive: true),
                Step(
                    title: Text("Third"),
                    subtitle: Text("Constructor"),
                    content: Text("Let's look at its construtor."),
                    state: StepState.error),
              ],
            ),
          );
    
      Widget _typeStep() => Container(
            margin: EdgeInsets.only(top: 10),
            constraints: BoxConstraints.expand(height: 200),
            color: BLUE_LIGHT,
            child: Stepper(
              type: StepperType.horizontal,
              steps: [
                Step(
                  title: Text("First"),
                  content: Text("This is our first example."),
                ),
                Step(
                  title: Text("Second"),
                  content: Text("This is our second example."),
                ),
              ],
            ),
          );
    
      Widget _tabStep() => Container(
            margin: EdgeInsets.only(top: 10),
            color: PURPLE,
            child: Stepper(
              steps: [
                Step(
                  title: Text("First"),
                  content: Text("This is our first example."),
                ),
                Step(
                  title: Text("Second"),
                  content: Text("This is our second example."),
                ),
                Step(
                  title: Text("Third"),
                  content: Text("This is our third example."),
                ),
                Step(
                  title: Text("Forth"),
                  content: Text("This is our forth example."),
                ),
              ],
              currentStep: _index,
              onStepTapped: (index) {
                setState(() {
                  _index = index;
                });
              },
              onStepCancel: () {
                print("You are clicking the cancel button.");
              },
              onStepContinue: () {
                print("You are clicking the continue button.");
              },
            ),
          );
    
      Widget _builderStep() => Container(
            margin: EdgeInsets.only(top: 10),
            color: RED,
            child: Stepper(
              steps: [
                Step(
                  title: Text("First"),
                  content: Text("This is our first example."),
                ),
                Step(
                  title: Text("Second"),
                  content: Text("This is our second example."),
                ),
                Step(
                  title: Text("Third"),
                  content: Text("This is our third example."),
                ),
                Step(
                  title: Text("Forth"),
                  content: Text("This is our forth example."),
                ),
              ],
              currentStep: _index,
              onStepTapped: (index) {
                setState(() {
                  _index = index;
                });
              },
              controlsBuilder: (BuildContext context,
                      {VoidCallback onStepContinue, VoidCallback onStepCancel}) =>
                  Container(),
            ),
          );
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
              title: Text(PageName.STEPPER),
            ),
            body: SingleChildScrollView(
              child: Column(
                children: <Widget>[
                  //our code.
                  _simpleStep(),
                  _steps(),
                  _typeStep(),
                  _tabStep(),
                  _builderStep(),
                  SizedBox(height: 600)
                ],
              ),
            ));
      }
    }
    

    您可以使用Stepper 并添加Step,您只需要跟踪您当前所处的步骤即可。您可以为此使用controlsBuilder。可以通过content 属性编辑每个Step。此时您还可以添加您的formbuilder。例如。将内容替换为以下内容:

        FormBuilderChoiceChip(
          name: 'choice_chip',
          decoration: InputDecoration(
            labelText: 'Select an option',
          ),
          options: [
            FormBuilderFieldOption(
                value: 'Test', child: Text('Test')),
            FormBuilderFieldOption(
                value: 'Test 1', child: Text('Test 1')),
            FormBuilderFieldOption(
                value: 'Test 2', child: Text('Test 2')),
            FormBuilderFieldOption(
                value: 'Test 3', child: Text('Test 3')),
            FormBuilderFieldOption(
                value: 'Test 4', child: Text('Test 4')),
          ],
        ),
    

    示例取自here

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 1970-01-01
      • 2020-09-18
      • 2020-06-16
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 2021-12-20
      • 2021-03-25
      相关资源
      最近更新 更多