qu_form 0.0.1 copy "qu_form: ^0.0.1" to clipboard
qu_form: ^0.0.1 copied to clipboard

A form package project.

example/lib/main.dart

import 'package:example/json.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:qu_form/Model/QUDynamicFormSettingModel.dart';
import 'package:qu_form/QUForm/Components/QUButton.dart';
import 'package:qu_form/qu_form.dart';

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

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

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

class _MyAppState extends State<MyApp> {
  final GlobalKey<QUFormState> _formKey = GlobalKey();
  bool _isMount = true;

  @override
  void initState() {
    super.initState();
    _setForm();
    _setFormValue();
  }

  @override
  void setState(fn) {
    if (_isMount) {
      super.setState(fn);
    }
  }

  @override
  void dispose() {
    super.dispose();
    _isMount = false;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'form example',
      locale: Locale('zh', 'CN'),
      // 国际化
      localizationsDelegates: [
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
      ],
      supportedLocales: [
        const Locale('en', 'US'), // 美国英语
        const Locale('zh', 'CN'), // 中文简体
        //其它Locales
      ],
      home: Scaffold(
        resizeToAvoidBottomInset: true,
        body: Container(
          padding: EdgeInsets.all(20),
          child: ListView(
            children: [
              QUButton(text: '提交', onPressed: _onPressed),
              QUForm(
                key: _formKey,
                mainColor: Color(0xff598FE8),
              ),
            ],
          ),
        ),
      ),
    );
  }

  // 模拟接口返回 设置表单
  _setForm() {
    Future.delayed(Duration(milliseconds: 1000), () {
      try {
        final List<QUDynamicFormSettingModel> formSetting =
            (data['dynamicFormSetting'] as List)
                .map((item) => QUDynamicFormSettingModel.fromJson(item))
                .toList();
        _formKey.currentState!.setFormSetting(formSetting);
      } catch (e) {
        print(e);
      }
    });
  }

  // 模拟接口设置表单数据
  _setFormValue() {
    Future.delayed(Duration(milliseconds: 2000), () {
      try {
        _formKey.currentState!.setFormValue(
            data['dynamicFormValue'] as Map<String, Map<String, dynamic>>);
      } catch (e) {
        print(e);
      }
    });
  }

  _onPressed() {
    final form = _formKey.currentState!;
    // 验证表单
    final isValidate = form.validate();
    if (isValidate) {
      final formValue = form.save();
      print(formValue);
    }
  }
}
1
likes
105
points
1
downloads

Publisher

unverified uploader

Weekly Downloads

A form package project.

Homepage

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

flutter, intl, json_annotation, just_debounce_it, provider

More

Packages that depend on qu_form