import 'dart:ui'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import '../../utils/ui_utils.dart'; import 'package:flutter_boost/flutter_boost.dart'; void popPage(BuildContext context) { if (Navigator.canPop(context)) { Navigator.of(context).pop(); } else { //uiMethodChannel.invokeMethod("popPage", ""); print("popPage"); BoostNavigator.instance.pop(""); } } class TopNavBar extends StatelessWidget { final String title; GestureTapCallback? back; String? rightText; String? leftText; Icon? rightIcon; GestureTapCallback? rightClick; final Color textColor; final Color backGround; final Image backIcon; TopNavBar( {required this.title, this.back, this.rightText, this.rightIcon, this.leftText = "", this.rightClick, this.textColor = const Color(0xFF333333), this.backGround = Colors.white, this.backIcon = const Image( image: AssetImage( "assets/imgs/common/icon_back.png", ), height: 19)}); @override Widget build(BuildContext context) { return Flex(direction: Axis.vertical, children: [ Container( height: MediaQuery.of(context).viewPadding.top, color: backGround, ), Container( color: backGround, height: 48, child: Stack( alignment: Alignment.centerLeft, children: [ Positioned( child: Container( alignment: Alignment.center, child: Flex( direction: Axis.horizontal, mainAxisAlignment: MainAxisAlignment.center, children: [ Container( width: 50, ), Expanded( child: Center( child: Text( title, maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(fontSize: 18, color: textColor), ))), Container( width: 50, ) ], ))), ((rightText != null && rightText!.isNotEmpty) || rightIcon != null) ? Positioned( right: 0, top: 0, bottom: 0, child: InkWell( onTap: () { rightClick!(); }, child: Container( alignment: Alignment.center, padding: const EdgeInsets.only(right: 10), child: rightIcon ?? Text( rightText!, style: TextStyle(fontSize: 15, color: textColor), ), ))) : Container(), InkWell( onTap: () { if (back != null) { back!(); } else { popPage(context); } }, child: Container( padding: const EdgeInsets.only(left: 10), height: 48, child: Row(mainAxisSize: MainAxisSize.min,crossAxisAlignment: CrossAxisAlignment.center, children: [ Icon( Icons.arrow_back_ios, color: textColor, ), leftText!.isNotEmpty ? Text( leftText!, style: const TextStyle(fontSize: 16), ) : Container() ]), )) ], ), ) ]); } }