createDecoratedPage method

  1. @override
CreateWidget createDecoratedPage(
  1. AppModel app,
  2. BuildContext context,
  3. Key? originalPageKey,
  4. CreateWidget createOriginalPage,
  5. PageModel model,
)
override

Implementation

@override
CreateWidget createDecoratedPage(AppModel app, BuildContext context,
    Key? originalPageKey, CreateWidget createOriginalPage, PageModel model) {
  if (!AccessBloc.isOwner(context, app)) return createOriginalPage;

  return (() {
    // Button for the decorator itself
    return MyDecoratedWidget(
//        label: 'creator',
        action: SingleAction(() {
          _isCreationMode.value = !_isCreationMode.value;
        }),
        ensureHeight: false,
        initialPosition: InitialPosition.centerBottom,
        isCreationMode: ValueNotifier<bool>(true),
        originalWidgetKey: originalPageKey,
        createOriginalWidget: () {
          // Button for the page
          return MyDecoratedWidget(
            isCreationMode: _isCreationMode,
            originalWidgetKey: originalPageKey,
            createOriginalWidget: () {
              // Button for the wizard
              return MyDecoratedWidget(
                isCreationMode: _isCreationMode,
                icon: Icon(
                  Icons.star,
                  color: Constants.iconColor,
                  size: 15,
                ),
                originalWidgetKey: originalPageKey,
                createOriginalWidget: () {
                  // Button for the app
                  return MyDecoratedWidget(
                    isCreationMode: _isCreationMode,
                    originalWidgetKey: originalPageKey,
                    createOriginalWidget: () {
                      return MyDecoratedWidget(
                        isCreationMode: _isCreationMode,
                        originalWidgetKey: originalPageKey,
                        createOriginalWidget: createOriginalPage,
                        icon: Icon(
                          Icons.palette_outlined,
                          color: Constants.iconColor,
                          size: CreatorButton.buttonClient * .7,
                        ),
                        action: SingleAction(() {
                          openComplexDialog(
                              app, context, '${app.documentID}/_style',
                              widthFraction: .5,
                              includeHeading: false,
                              child: StyleSelectionWidget.getIt(
                                  context, app, true, false, false),
                              title: 'Style');
                        }),
                        ensureHeight: false,
                        initialPosition: InitialPosition.rightBottom,
                      );
                    },
                    action: SingleAction(() {
                      openFlexibleDialog(
                        app,
                        context,
                        '${app.documentID}/_appcreate',
                        includeHeading: false,
                        widthFraction: fraction,
                        child: AppCreateWidget.getIt(
                          context,
                          app,
                          false,
                          fullScreenWidth(context) * fraction,
                          fullScreenHeight(context) - 100,
                        ),
                      );
                    }),
                    ensureHeight: false,
                    initialPosition: InitialPosition.leftAlmostBottom,
                    label: 'app',
                  );
                },
                action: SingleAction(() {
                  var member = AccessBloc.member(context);
                  if (member != null) {
                    newWizard(
                      context,
                      member,
                      app,
                      fraction: .9,
                    );
                  }
                }),
                ensureHeight: false,
                initialPosition: InitialPosition.leftBottom,
//                  label: 'wizard',
              );
            },
            action: MultipleActions(app, [
              ActionWithLabel('Update page', () {
                openPage(
                  context,
                  app,
                  false,
                  model,
                  'Update Page',
                );
              }),
              ActionWithLabel('Create page', () {
                openPage(context, app, true, newPageDefaults(app.documentID),
                    'Create page');
              }),
              ActionWithLabel('Create page from previously stored page', () {
                var member = AccessBloc.member(context);
                if (member != null) {
                  newFromJson(
                    context,
                    member,
                    app,
                  );
                } else {
                  print("Can't create page without logged in member");
                }
              }),
            ]),
            ensureHeight: false,
            initialPosition: InitialPosition.leftCenter,
            label: 'page',
          );
        });
  });
}