Flutter表单生成插件flutter_lyform的使用

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

Flutter LyForm

License: MIT Version codecov Test maintained with melos style: lint Last commit GitHub commit activity Github Stars Github Forks Github Watchers GitHub contributors

Flutter package to implement forms in an easy, fast, and effective way using the lyform and flutter_bloc packages.

Sponsored with 💖 by

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Tony Raul Blanco Fernandez

💻 🚧

Leynier Gutiérrez González

💻 📖

Leonel

💻 🐛

Carlos Bermudez Porto

💻

Yeikel Uriarte Arteaga

💻 🐛

This project follows the all-contributors specification. Contributions of any kind welcome!

使用示例

示例代码

以下是一个简单的示例,展示了如何使用 flutter_lyform 插件来创建一个表单页面。

1. 添加依赖

在你的 pubspec.yaml 文件中添加 flutter_lyformflutter_bloc 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_lyform: ^1.0.0
  flutter_bloc: ^8.0.0

2. 创建 Bloc 观察者

创建一个 bloc_observer.dart 文件,用于观察 Bloc 的状态变化:

import 'package:flutter_bloc/flutter_bloc.dart';

class AppBlocObserver extends BlocObserver {
  @override
  void onEvent(Bloc bloc, Object? event) {
    super.onEvent(bloc, event);
    print(event);
  }

  @override
  void onChange(BlocBase bloc, Change change) {
    super.onChange(bloc, change);
    print(change);
  }

  @override
  void onError(BlocBase bloc, Object error, StackTrace stackTrace) {
    print(error);
    super.onError(bloc, error, stackTrace);
  }
}

3. 创建主应用

创建一个 main.dart 文件,作为应用的入口点:

import 'package:example/bloc_observer.dart';
import 'package:example/profile_form/profile_page.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';

void main() {
  Bloc.observer = AppBlocObserver();
  runApp(const App());
}

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: ProfilePage(),
    );
  }
}

4. 创建表单页面

创建一个 profile_page.dart 文件,用于展示表单页面:

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

class ProfilePage extends StatefulWidget {
  const ProfilePage({Key? key}) : super(key: key);

  @override
  _ProfilePageState createState() => _ProfilePageState();
}

class _ProfilePageState extends State<ProfilePage> {
  final _formKey = GlobalKey<FormState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Profile Form'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: _formKey,
          child: Column(
            children: [
              LyTextField(
                label: 'Name',
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return 'Please enter your name';
                  }
                  return null;
                },
              ),
              const SizedBox(height: 16.0),
              LyTextField(
                label: 'Email',
                keyboardType: TextInputType.emailAddress,
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return 'Please enter your email';
                  }
                  if (!RegExp(r'^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$').hasMatch(value)) {
                    return 'Please enter a valid email address';
                  }
                  return null;
                },
              ),
              const SizedBox(height: 16.0),
              ElevatedButton(
                onPressed: () {
                  if (_formKey.currentState!.validate()) {
                    // 表单验证通过,可以提交表单数据
                    ScaffoldMessenger.of(context).showSnackBar(
                      const SnackBar(content: Text('Form submitted successfully!')),
                    );
                  }
                },
                child: const Text('Submit'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

运行应用

  1. 确保你已经安装了 Flutter 和 Dart。
  2. 在终端中运行 flutter pub get 命令来获取依赖。
  3. 运行 flutter run 命令启动应用。

以上就是一个使用 flutter_lyform 插件创建表单的基本示例。希望对你有所帮助!如果有任何问题或建议,欢迎随时提出。


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

1 回复

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


当然,下面是一个关于如何使用Flutter表单生成插件flutter_lyform的代码示例。这个示例将展示如何创建一个简单的表单,包括文本输入和提交按钮。

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

dependencies:
  flutter:
    sdk: flutter
  flutter_lyform: ^最新版本号  # 请替换为实际发布的最新版本号

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

接下来,在你的Flutter项目中创建一个简单的表单页面。以下是一个完整的示例代码:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Lyform Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyFormPage(),
    );
  }
}

class MyFormPage extends StatefulWidget {
  @override
  _MyFormPageState createState() => _MyFormPageState();
}

class _MyFormPageState extends State<MyFormPage> {
  final _formKey = GlobalKey<FormState>();
  late LyForm lyForm;

  @override
  void initState() {
    super.initState();

    // 定义表单字段
    final fields = [
      LyFormField(
        type: LyFieldType.text,
        name: 'name',
        label: 'Name',
        validator: (value) {
          if (value == null || value.isEmpty) {
            return 'Name is required';
          }
          return null;
        },
      ),
      LyFormField(
        type: LyFieldType.email,
        name: 'email',
        label: 'Email',
        validator: (value) {
          if (value == null || value.isEmpty || !value.contains('@')) {
            return 'Please enter a valid email';
          }
          return null;
        },
      ),
    ];

    // 初始化LyForm
    lyForm = LyForm(
      formKey: _formKey,
      fields: fields,
      onSubmit: (formData) {
        // 处理表单提交
        print('Form Data: $formData');
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('Form submitted!')),
        );
      },
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Lyform Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: lyForm.buildForm(context),
      ),
    );
  }
}

在这个示例中,我们做了以下事情:

  1. 添加了flutter_lyform依赖。
  2. 创建了一个MyApp应用程序,其中包含一个MyFormPage页面。
  3. MyFormPage页面中,使用LyForm类来构建表单。
  4. 定义了两个表单字段:一个是文本字段(name),另一个是电子邮件字段(email)。
  5. 为每个字段添加了验证器(validator),以确保输入的数据符合预期的格式。
  6. 在表单提交时,打印表单数据并显示一个SnackBar。

这个示例展示了如何使用flutter_lyform插件来快速生成和管理表单。你可以根据需要扩展这个示例,添加更多的字段和验证规则。

回到顶部