obj_edit_gen 1.0.3 icon indicating copy to clipboard operation
obj_edit_gen: ^1.0.3 copied to clipboard

SDKDart

Automatically generate code for converting to widget by annotating Dart classes.

obj_edit_gen #

Automatically generate code for converting to widget by annotating Dart classes

Setup #

To configure your project for the latest released version of, obj_edit_gen see the example.

Example #

Given a library test.dart with an Test class annotated with @ObjEdit():

import 'package:obj_edit_annotation/obj_edit_annotation.dart';

import 'obj_option.dart';
//flutter pub run build_runner build --delete-conflicting-outputs

@ObjEdit(head: "import 'obj_option.dart';")
class Test {
  @ObjEditTextSetting(
      sectionName: "section1",
      title: "Name",
      hint: "name1",
      icon: "Icons.person")
  String name;
  @ObjEditOptionSetting(
      sectionName: "section1",
      title: "Option",
      options: '<String>["option1","option2","option3"]')
  String option;

  @ObjEditOptionSetting(
      sectionName: "section1",
      title: "ObjOption",
      options:
          '<ObjOption>[new ObjOption("objOption1"),new ObjOption("objOption2"),new ObjOption("objOption3")]')
  ObjOption objOption;

  @ObjEditTextSetting(sectionName: "section2", title: "Name", hint: "name2")
  String name2;
  @ObjEditOptionSetting(
      sectionName: "section2",
      title: "Option",
      options: '<String>["option1","option2","option3"]')
  String option2;

  Test(this.name, this.option, this.objOption, this.name2, this.option2);
}

Building creates the corresponding part test.e.dart:

// GENERATED CODE - DO NOT MODIFY BY HAND

// **************************************************************************
// ObjEditGenerator
// **************************************************************************

import 'obj_option.dart';
import 'test.dart';
import 'package:flutter/material.dart';
import 'package:obj_edit_widgets/obj_edit_widgets.dart';

class TestWidget extends StatelessWidget {
  final Test? obj;
  TestWidget({Key? key, this.obj}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    if (obj == null) {
      return new Center(child: new Text('No Content'));
    }
    return ObjEditor(sections: [
      ObjSection(title: 'section1', tiles: [
        TextTile(
          title: "Name",
          hintText: "name1",
          icon: Icons.person,
          initText: obj!.name,
          onChanged: (String text) {
            obj!.name = text;
          },
        ),
        DropDownTile<String>(
          title: "Option",
          selected: obj!.option,
          options: <String>["option1", "option2", "option3"],
          itemBuilder: (selectValue) {
            return Text(selectValue.toString(), textAlign: TextAlign.end);
          },
          onChanged: (value) {
            obj!.option = value;
          },
        ),
        DropDownTile<ObjOption>(
          title: "ObjOption",
          selected: obj!.objOption,
          options: <ObjOption>[
            new ObjOption("objOption1"),
            new ObjOption("objOption2"),
            new ObjOption("objOption3")
          ],
          itemBuilder: (selectValue) {
            return Text(selectValue.toString(), textAlign: TextAlign.end);
          },
          onChanged: (value) {
            obj!.objOption = value;
          },
        ),
      ]),
      ObjSection(title: 'section2', tiles: [
        TextTile(
          title: "Name",
          hintText: "name2",
          initText: obj!.name2,
          onChanged: (String text) {
            obj!.name2 = text;
          },
        ),
        DropDownTile<String>(
          title: "Option",
          selected: obj!.option2,
          options: <String>["option1", "option2", "option3"],
          itemBuilder: (selectValue) {
            return Text(selectValue.toString(), textAlign: TextAlign.end);
          },
          onChanged: (value) {
            obj!.option2 = value;
          },
        ),
      ]),
    ]);
  }
}

Running the code generator #

Once you have added the annotations to your code you then need to run the code generator to generate the missing .e.dart generated dart files.

run flutter pub run build_runner build in your package directory.

Annotation values #

  • [x] class annotation: @ObjEdit.
  • [x] text|int|double field annotation: @ObjEditTextSetting
  • [x] option field annotation: @ObjEditOptionSetting
  • [x] bool field annotation: @ObjEditBoolSetting
  • [ ] date field
1
likes
70
pub points
0%
popularity

Publisher

unverified uploader

Automatically generate code for converting to widget by annotating Dart classes.

Repository (GitHub)

Documentation

API reference

License

Icon for licenses.MIT (LICENSE)

Dependencies

analyzer, build, build_config, obj_edit_annotation, source_gen

More

Packages that depend on obj_edit_gen