velix_editor 0.9.0 copy "velix_editor: ^0.9.0" to clipboard
velix_editor: ^0.9.0 copied to clipboard

Velix Wysiwyg UI editor and runtime engine based on a JSON persistence format including reflection based evaluation of dart expressions.

example/lib/main.dart

import 'package:flutter/material.dart';


import 'package:velix/velix.dart';
import 'package:velix_di/velix_di.dart';
import 'package:velix_editor/editor_module.dart';
import 'package:velix_editor/metadata/properties/properties.dart';
import 'package:velix_editor/metadata/widget_data.dart';
import 'package:velix_editor/util/assets.dart';
import 'package:velix_i18n/velix_i18n.dart';
import 'package:velix_mapper/mapper/json.dart';
import 'package:velix_mapper/mapper/mapper.dart';
import 'package:velix_ui/velix_ui.dart';

import 'main.types.g.dart';
import 'application.dart';

class VelixTranslator extends Translator {
  // constructor

  VelixTranslator() {
    Translator.instance = this;
  }

  // implement

  @override
  String translate(String key, {String? defaultValue, Map<String, dynamic>  args = const {}}) {
    return I18N.tr(key, defaultValue: defaultValue, args: args);
  }
}

@Module(imports: [EditorModule])
class ApplicationModule {
}

void main() async {
  // flutter

  ValuedWidget.platform = TargetPlatform.android;

  WidgetsFlutterBinding.ensureInitialized();

  // tracer

  Tracer(
      isEnabled: true,
      trace: ConsoleTrace("%d [%l] %p: %m [%f]"), // d(ate), l(evel), p(ath), m(message), f(ile)
      paths: {
        "": TraceLevel.off,
        "i18n": TraceLevel.full,
        "editor": TraceLevel.full,
        "di": TraceLevel.full
      });

  // bootstrap types

  EditorModule.boot; // this sucks

  registerTypes();

  // configure json stuff

  JSON(
      validate: false,
      converters: [
        BorderStyleConvert(),
        MainAxisSizeConvert(),
        MainAxisAlignmentConvert(),
        CrossAxisAlignmentConvert(),
        ColorConvert(),
        FontWeightConvert(),
        FontStyleConvert(),
        Convert<DateTime,String>(
            convertSource: (value) => value.toIso8601String(),
            convertTarget: (str) => DateTime.parse(str)
        )
      ],
      factories: [
        Enum2StringFactory()
      ]);

  // translation

  VelixTranslator();

  TypeViolationTranslationProvider();

  var localeManager = LocaleManager(Locale('en'),
      supportedLocales: [Locale('en'), Locale('de')]
  );

  var i18n = I18N(
      fallbackLocale: Locale("en"),
      localeManager: localeManager,
      loader: AssetTranslationLoader(
        namespacePackageMap: {
          "validation": "velix",
          "editor": "velix_editor"
        }
      ),
      missingKeyHandler: (key) {
        //print("missing i18n: $key");
        return '##$key##';
        },
      preloadNamespaces: ["validation", "editor"]
  );

  await i18n.load();

  // boot environment

  var environment = Environment(forModule: ApplicationModule);

  // preload screens

  await Assets.init();

  await Assets.assets().preloadTransform<Map<String,dynamic>,WidgetData>(
      prefix: "screens",
      transform: (json) => JSON.deserialize<WidgetData>(json)
  );

  // load namespaces

  runApp(ExampleApp(
      environment: environment,
      i18n: i18n,
      localeManager: localeManager
  ));
}
3
likes
120
points
2
downloads

Publisher

unverified uploader

Weekly Downloads

Velix Wysiwyg UI editor and runtime engine based on a JSON persistence format including reflection based evaluation of dart expressions.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

build, build_runner, cupertino_icons, file_picker, file_selector, file_selector_platform_interface, flutter, flutter_highlight, flutter_localizations, flutter_svg, oktoast, path, path_provider, path_provider_platform_interface, petitparser, provider, uuid, velix, velix_di, velix_i18n, velix_mapper, velix_ui

More

Packages that depend on velix_editor