topNav method

Widget topNav(
  1. TopResources ti
)

Implementation

Widget topNav(TopResources ti) {
  Widget inner = AnimatedContainer(
    duration: ti.globalDuration,
    margin: (){
      EdgeInsets margin = ti.frame.vertical ? EdgeInsets.zero : const EdgeInsets.only(right: 20);
      if(ti.frame.vertical && !ti.frame.expanded){
        margin += const EdgeInsets.only(bottom: 20);
      }
      return margin;
    }(),
    child: AnimatedAlign(
      duration: ti.globalDuration,
      alignment: ti.frame.expanded ? Alignment.center : Alignment.centerLeft,
      child: Row(
        mainAxisSize: MainAxisSize.min,
        children: [
          const SizedBox.square(
            dimension: 50,
            child: Center(
              child: Icon(Icons.menu),
            )
          ),
          Text(_title == "" ? widget.appName : _title,
            style: Theme.of(context).textTheme.titleMedium,
          ),
        ]
      )
    )
  );
  if(widget.floatingItem != null){
    inner = Row(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        Expanded(
          child: inner
        ),
        if(vertical) AnimatedSwitcher(
          duration: ti.globalDuration,
          transitionBuilder: (child, anim) =>
            SizeTransition(
              sizeFactor: anim,
              axis: Axis.horizontal,
              axisAlignment: -1.0,
              child: child
            ),
          child: !ti.frame.expanded ?
            widget.floatingItem : null
        )
      ],
    );
  }
  return SizedOverflowBox(
    alignment: Alignment.topLeft,
    size: const Size.fromHeight(50),
    child: InkResponse(
      highlightShape: BoxShape.rectangle,
      containedInkWell: true,
      onTap: () => expanded = !_expanded,
      child: inner,
    )
  );
}