Flutter下拉表单字段插件dropdown_formfield的使用

Flutter下拉表单字段插件dropdown_formfield的使用

一个使用下拉按钮作为表单字段的下拉表单字段。

Demo

特性

  • 可以作为常规表单字段使用。
  • 实现简单。
  • 在应用程序中使用简单直观。
  • 提供数据验证。
  • 提供字段的要求。
  • 遵循应用程序的主题和颜色。

示例

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _myActivity;
  String _myActivityResult;
  final formKey = new GlobalKey<FormState>();

  [@override](/user/override)
  void initState() {
    super.initState();
    _myActivity = '';
    _myActivityResult = '';
  }

  _saveForm() {
    var form = formKey.currentState;
    if (form.validate()) {
      form.save();
      setState(() {
        _myActivityResult = _myActivity;
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Dropdown Formfield Example'),
      ),
      body: Center(
        child: Form(
          key: formKey,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.start,
            children: <Widget>[
              Container(
                padding: EdgeInsets.all(16),
                child: DropDownFormField(
                  titleText: 'My workout', // 表单字段的标题
                  hintText: 'Please choose one', // 提示文字
                  value: _myActivity, // 当前选中的值
                  onSaved: (value) { // 表单保存时触发
                    setState(() {
                      _myActivity = value;
                    });
                  },
                  onChanged: (value) { // 值改变时触发
                    setState(() {
                      _myActivity = value;
                    });
                  },
                  dataSource: [ // 数据源
                    {
                      "display": "Running", // 显示的文本
                      "value": "Running", // 实际值
                    },
                    {
                      "display": "Climbing",
                      "value": "Climbing",
                    },
                    {
                      "display": "Walking",
                      "value": "Walking",
                    },
                    {
                      "display": "Swimming",
                      "value": "Swimming",
                    },
                    {
                      "display": "Soccer Practice",
                      "value": "Soccer Practice",
                    },
                    {
                      "display": "Baseball Practice",
                      "value": "Baseball Practice",
                    },
                    {
                      "display": "Football Practice",
                      "value": "Football Practice",
                    },
                  ],
                  textField: 'display', // 数据源中的键,用于显示的文本
                  valueField: 'value', // 数据源中的键,用于实际值
                ),
              ),
              Container(
                padding: EdgeInsets.all(8),
                child: RaisedButton(
                  child: Text('Save'), // 按钮文本
                  onPressed: _saveForm, // 按钮点击事件
                ),
              ),
              Container(
                padding: EdgeInsets.all(16),
                child: Text(_myActivityResult), // 显示选中的值
              )
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter下拉表单字段插件dropdown_formfield的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter下拉表单字段插件dropdown_formfield的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


dropdown_formfield 是一个用于 Flutter 的下拉表单字段插件,它允许你轻松地在表单中添加下拉选择框。这个插件提供了丰富的自定义选项,可以满足大多数表单需求。

安装

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

dependencies:
  flutter:
    sdk: flutter
  dropdown_formfield: ^0.1.3  # 请确认使用最新版本

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

使用示例

以下是一个简单的示例,展示如何在 Flutter 应用中使用 dropdown_formfield

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Dropdown FormField Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: DropdownFormFieldExample(),
    );
  }
}

class DropdownFormFieldExample extends StatefulWidget {
  [@override](/user/override)
  _DropdownFormFieldExampleState createState() => _DropdownFormFieldExampleState();
}

class _DropdownFormFieldExampleState extends State<DropdownFormFieldExample> {
  String _selectedValue;
  final _formKey = GlobalKey<FormState>();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Dropdown FormField Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: <Widget>[
              DropDownFormField(
                titleText: '选择项',
                hintText: '请选择一个选项',
                value: _selectedValue,
                onSaved: (value) {
                  setState(() {
                    _selectedValue = value;
                  });
                },
                onChanged: (value) {
                  setState(() {
                    _selectedValue = value;
                  });
                },
                dataSource: [
                  {"display": "选项 1", "value": "1"},
                  {"display": "选项 2", "value": "2"},
                  {"display": "选项 3", "value": "3"},
                ],
                textField: 'display',
                valueField: 'value',
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () {
                  if (_formKey.currentState.validate()) {
                    _formKey.currentState.save();
                    ScaffoldMessenger.of(context).showSnackBar(
                      SnackBar(content: Text('选择的值: $_selectedValue')),
                    );
                  }
                },
                child: Text('提交'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部