xLayout_asPage method

Widget xLayout_asPage(
  1. BuildContext context
)

Layout della Scheda se รจ visualizzata come Pagina completa

Implementation

Widget xLayout_asPage(BuildContext context) {
  return WillPopScope(
      onWillPop: () async => await xCMD_Back(),
      child: GestureDetector(
          onTap: () => FocusScope.of(context).unfocus(),
          child: Scaffold(
            // resizeToAvoidBottomInset: false,
            appBar: AppBar(
                toolbarHeight: xLayout_AppBar_AdditionalActions() != [] ? null : 40,
                iconTheme: IconThemeData(color: widget.title_BackColor ?? XColors.foregroundDark),
                title: Text(((widget.title ?? "").replaceAll("App", "")), style: XStyles.xStyTextForLabel(textColor: widget.title_BackColor ?? XColors.foregroundDark)),
                backgroundColor: widget.title_Color,
                actions: [
                  Row(children: [
                    Container(
                        margin: EdgeInsets.only(bottom: 4, top: 5, right: 5),
                        child: Row(
                            children: xLayout_AppBar_AdditionalActions()
                                .map((e) => e != null
                                    ? XActionWidget(e, xApp: widget.xApp) //
                                    : Container())
                                .toList())),
                    editedPage.value
                        ? XActionWidget(XActionsBase.save, xApp: widget.xApp, onPressed: () async {
                            super.setState(() {
                              xWaiterMessage = "Sto salvando i tuoi dati..";
                              isBusy = true;
                            });
                            await xCMD_Save();
                            super.setState(() {
                              xWaiterMessage = "";
                              isBusy = false;
                            });
                          })
                        : Container(),
                  ])
                ]),
            body: Stack(children: [
              xLayout_BodyBuild() != null
                  ? xLayout_BodyBuild() ?? Container()
                  : this.xTabs.value.isNotEmpty || widget.allowViewDettsAlways || this.xTabs.value.any((element) => element.xElencoToView != null && element.xElencoToView!.liDetts!.isNotEmpty)
                      ? XResizableWidget(
                          key: schKey,
                          isHorizontalSeparator: true,
                          title: xResizable_Title ?? (this.xTabs.value.length <= 1 && this.xTabs.value.isNotEmpty ? this.xTabs.value.first.caption : ""),
                          separatorColor: (widget.title_Color ?? Colors.grey[700]!),
                          separatorSize: 42,
                          onResized: (infoList) {
                            if (isKeyboardVisible.not()) {
                              xResizable_Percent_TopArea = infoList.first.percentage < 0.1 ? 0.1 : double.parse(infoList.first.percentage.toStringAsFixed(1));
                              xResizable_Percent_BottomArea = infoList.last.percentage < 0.1 ? 0.1 : double.parse(infoList.last.percentage.toStringAsFixed(1));
                            }
                          },
                          xWidgets_BeforeTitle: xLayout_XResizer_AdditionalWidgets_BeforeTitle(),
                          xWidgets_AfterTitle: xLayout_XResizer_AdditionalWidgets_AfterTitle(),
                          percentages: [
                              xResizable_Percent_TopArea == 1.0 ? (xResizable_Percent_TopArea - 0.1) : (xResizable_Percent_TopArea),
                              xResizable_Percent_BottomArea == 1.0 ? (xResizable_Percent_BottomArea - 0.1) : (xResizable_Percent_BottomArea)
                            ],
                          children: [
                              widget.xHead_Show ? xLayout_HeadAreaBuilder(xclView: widget.xView) : Container(),
                              Stack(alignment: Alignment.bottomCenter, children: [
                                this.xTabs.value.length <= 1
                                    ? this.xTabs.value.isNotEmpty
                                        ? (this.xTabs.value.map((x) => widget.complexUI ? x.content ?? Container() : x.xElencoToView ?? Container()).first)
                                        : Container()
                                    : XfxSchedaTabbed(
                                        margin_Horizontal: 0,
                                        tabs_BackGroundColor: Colors.grey[900],
                                        title_Color: widget.title_Color,
                                        currentTabIdx: ((xTabs.value.isEmpty || xTab_Active == null) ? (xTabs.value.isEmpty ? 0 : xTabs.value.first.idx) : xTab_Active!.idx),
                                        title_Visible: false,
                                        bottomBar_Visible: false,
                                        bottomBar_Children: [],
                                        numberOfTabs: this.xTabs.value.length,
                                        tabBar_OnTap: (idx) => xTab_Active = this.xTabs.value.firstWhere((element) => element.idx == idx),
                                        isScrollableTabs: this.xTabs.value.length >= 4 ? true : false,
                                        children: this.xTabs.value.map((x) => (widget.complexUI ? x.content ?? Container() : x.xElencoToView ?? Container())).toList(),
                                        xTabs: this.xTabs.value,
                                      ),
                                Column(crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, children: xLayout_BottomArea_OverSch() ?? []),
                              ])
                            ])
                      : widget.xHead_Show
                          ? xLayout_HeadAreaBuilder(xclView: widget.xView)
                          : Container(height: 0),
              isBusy ? Container(color: Colors.black.withAlpha(160)) : Container(),
              isBusy ? XStatefulWidgetBase.LoaderIndicator(isBusy, label: xWaiterMessage) : Container(),
            ]),
            bottomNavigationBar: (liBottomActions.length > 1) && widget.editable
                ? BottomNavigationBar(
                    key: UniqueKey(),
                    items: liBottomActions,
                    type: BottomNavigationBarType.fixed,
                    currentIndex: 0,
                    onTap: (value) async => await xBottomBarAction_OnTap_INTERNAL(value, setState),
                    enableFeedback: true,
                    showUnselectedLabels: true,
                    selectedFontSize: 15,
                    selectedLabelStyle: XStyles.xStyleText(fontSize: 14, colorText: XColors.foregroundLight),
                    backgroundColor: Colors.grey[900],
                    unselectedItemColor: XColors.foregroundLight,
                    unselectedFontSize: 10,
                    useLegacyColorScheme: false,
                    unselectedLabelStyle: XStyles.xStyleText(fontSize: 14, colorText: XColors.foregroundLight),
                    iconSize: 20,
                  )
                : null,
            floatingActionButton: widget.editable
                ? xLayout_FloatingAddBTN_Widget() == null
                    ? (liBottomActions.length == 1 ? xLayout_FloatingAddBTN(liBottomActions[0]) : null)
                    : xLayout_FloatingAddBTN_Widget()
                : null,
          )));
}