diff --git a/.gitmodules b/.gitmodules index 31e8bdf1c6..b7b3016877 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,7 +2,7 @@ path = libraries/LGLibrary url = git@git.ghzs.com:android/common-library.git branch = master -[submodule "flutter-module"] - path = flutter-module +[submodule "assistant-flutter"] + path = assistant-flutter url = git@git.ghzs.com:halo/android/flutter-module.git branch = dev diff --git a/assistant-flutter/lib/common/assistant_app.dart b/assistant-flutter/lib/common/assistant_app.dart deleted file mode 100644 index 9948af5a51..0000000000 --- a/assistant-flutter/lib/common/assistant_app.dart +++ /dev/null @@ -1,20 +0,0 @@ -//@dart=2.9 -import 'package:assistant/common/assistant_routes.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_boost/flutter_boost.dart'; - -class AssistantApp extends StatefulWidget { - @override - State createState() => AssistantAppState(); -} - -class AssistantAppState extends State { - - Route _buildRoute(RouteSettings settings, String uniqueId) { - FlutterBoostRouteFactory func = routes[settings.name]; - return func?.call(settings, uniqueId); - } - - @override - Widget build(BuildContext context) => FlutterBoostApp(_buildRoute); -} \ No newline at end of file diff --git a/assistant-flutter/lib/common/assistant_appbar.dart b/assistant-flutter/lib/common/assistant_appbar.dart deleted file mode 100644 index 98c803eb4b..0000000000 --- a/assistant-flutter/lib/common/assistant_appbar.dart +++ /dev/null @@ -1,113 +0,0 @@ - -import 'package:flutter/cupertino.dart' hide ImageProvider; -import 'package:flutter/material.dart' hide ImageProvider; -import 'package:flutter_glide/flutter_glide.dart'; - -class AssistantAppBar extends StatelessWidget implements PreferredSizeWidget { - static const double APP_BAR_SIZE = 48; - static const String DEFAULT_NAVIGATION_ICON = "R.drawable.ic_bar_back"; - - // 标题栏 - final String title;// 标题文案 - final double? titleSize;// 标题字体大小 - final Color? titleColor;// 标题字体颜色 - final TextStyle? titleStyle;// 标题字体样式 - final Widget? titleWidget;// 自定义标题控件 - - // 导航按钮 - final ImageProvider? navigationIcon;// 导航按钮图标 - final double? navigationMarginStart;// 导航按钮左间隔 - final double? navigationIconWidth;// 导航按钮宽度 - final double? navigationIconHeight;// 导航按钮高度 - final Widget? navigationWidget;// 自定导航按钮控件 - final VoidCallback? onNavigationPressed;// 导航按钮点击事件 - - // 菜单栏 - final Widget? menuWidget; // 自定义菜单控件 - final double? menuMarginEnd; // 菜单右间隔 - final VoidCallback? onMenuPressed;// 菜单点击事件 - - - - const AssistantAppBar({ - Key? key, - required this.title, - this.titleSize, - this.titleColor, - this.titleStyle, - this.titleWidget, - this.navigationWidget, - this.navigationIcon, - this.onNavigationPressed, - this.navigationIconWidth, - this.navigationIconHeight, - this.navigationMarginStart, - this.menuWidget, - this.menuMarginEnd, - this.onMenuPressed, - }) : super(key: key); - - @override - Widget build(BuildContext context) { - // 导航栏 - Widget navigationWidget = this.navigationWidget ?? - Glide( - navigationIcon ?? const DrawableImageProvider(DEFAULT_NAVIGATION_ICON), - width: navigationIconWidth ?? 24, - height: navigationIconHeight ?? 24 - ); - if (onNavigationPressed != null) - navigationWidget = IconButton( - onPressed: onNavigationPressed, - icon: navigationWidget, - splashRadius: 21, - ); - navigationWidget = Positioned( - left: navigationMarginStart??0, - child: navigationWidget - ); - - // 标题栏 - TextStyle? appBarTextStyle = AppBarTheme.of(context).titleTextStyle; - Widget titleWidget = this.titleWidget ?? Text( - this.title, - style: this.titleStyle??TextStyle( - color: this.titleColor??Colors.black, - fontSize: this.titleSize??15, - fontWeight: FontWeight.bold, - fontFamily: appBarTextStyle?.fontFamily - ), - ); - - // 菜单栏 - Widget menuWidget = Container(); - if (this.menuWidget != null) { - menuWidget = Positioned( - right: this.menuMarginEnd??15, - child: this.onMenuPressed != null ? GestureDetector( - onTap: this.onMenuPressed, - child: this.menuWidget - ) : this.menuWidget! - ); - } - - return SafeArea( - child: Container( - height: APP_BAR_SIZE, - alignment: Alignment.center, - child: Stack( - alignment: Alignment.center, - children: [ - navigationWidget, - titleWidget, - menuWidget - ], - ) - ) - ); - } - - @override - Size get preferredSize => Size.fromHeight(APP_BAR_SIZE); - -} \ No newline at end of file diff --git a/assistant-flutter/lib/common/assistant_binding.dart b/assistant-flutter/lib/common/assistant_binding.dart deleted file mode 100644 index c2362e338b..0000000000 --- a/assistant-flutter/lib/common/assistant_binding.dart +++ /dev/null @@ -1,8 +0,0 @@ -//@dart=2.9 -import 'package:flutter_boost/flutter_boost.dart'; -import 'package:flutter/material.dart'; - -//这里要特别注意,如果你的工程里已经有一个继承自WidgetsFlutterBinding的自定义Binding,则只需要将其with上BoostFlutterBinding -//如果你的工程没有自定义的Binding,则可以参考这个CustomFlutterBinding的做法 -//BoostFlutterBinding用于接管Flutter App的生命周期,必须得接入的 -class AssistantFlutterBinding extends WidgetsFlutterBinding with BoostFlutterBinding {} \ No newline at end of file diff --git a/assistant-flutter/lib/common/assistant_colors.dart b/assistant-flutter/lib/common/assistant_colors.dart deleted file mode 100644 index 5136e2caa7..0000000000 --- a/assistant-flutter/lib/common/assistant_colors.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:flutter/cupertino.dart'; - -class AssistantColors { - AssistantColors._(); - - static const color_primary = const Color(0xFF1383EB); - - static const color_666666 = const Color(0xFF666666); - static const color_eeeeee = const Color(0xFFEEEEEE); -} \ No newline at end of file diff --git a/assistant-flutter/lib/common/assistant_routes.dart b/assistant-flutter/lib/common/assistant_routes.dart deleted file mode 100644 index 148f8f1991..0000000000 --- a/assistant-flutter/lib/common/assistant_routes.dart +++ /dev/null @@ -1,23 +0,0 @@ -//@dart=2.9 -import 'package:flutter/cupertino.dart'; -import 'package:flutter_boost/flutter_boost.dart'; -import 'package:assistant/pages/feedback/feedback_page.dart'; - -const String FEED_BACK = "feedback"; - -Map get routes => { - "/": (settings, uniqueId) { - return PageRouteBuilder( - settings: settings, - pageBuilder: (_, __, ___) { - return FeedbackPage(); - }); - }, - FEED_BACK: (settings, uniqueId) { - return PageRouteBuilder( - settings: settings, - pageBuilder: (_, __, ___) { - return FeedbackPage(); - }); - } -}; \ No newline at end of file diff --git a/assistant-flutter/lib/common/assistant_search_bar.dart b/assistant-flutter/lib/common/assistant_search_bar.dart deleted file mode 100644 index 746f28683b..0000000000 --- a/assistant-flutter/lib/common/assistant_search_bar.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - -class AssistantSearchBar extends StatelessWidget { - final TextEditingController? controller; - - const AssistantSearchBar({this.controller}) : super(); - - @override - Widget build(BuildContext context) => Container( - child: Row( - children: [ - Flexible( - child: TextField( - controller: controller, - decoration: const InputDecoration( - hintText: "请输入关键词搜索", - ), - ) - ) - ], - ), - ); - -} \ No newline at end of file diff --git a/assistant-flutter/lib/common/assistant_tab_indicator.dart b/assistant-flutter/lib/common/assistant_tab_indicator.dart deleted file mode 100644 index 297a7a05ee..0000000000 --- a/assistant-flutter/lib/common/assistant_tab_indicator.dart +++ /dev/null @@ -1,80 +0,0 @@ -/** - * 自定义TabIndicator - */ -import 'package:assistant/common/assistant_tabbar.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - -enum TabBarIndicatorShape { - /// 圆角方形指示器 - round, - /// 方形指示器 - square -} - -/// 自定义TabBar指示器 -/// 该指示器实现了如下功能: -/// 1.支持指示器设置固定宽度 -/// 2.支持指示器设置为圆角矩形 -/// 该TabBar指示器类已作为默认指示器类应用于[AssistantTabBar] -class UnderlineTabIndicator extends Decoration { - /// TabBar指示器的宽度 - /// 传空则宽度根据原生指示器的规则计算宽度 - final double? indicatorWidth; - /// TabBar指示器的形状 - final TabBarIndicatorShape? border; - - const UnderlineTabIndicator({ - this.border, - this.indicatorWidth, - this.borderSide = const BorderSide( - width: 2.0, - color: Colors.white - ), - this.insets = EdgeInsets.zero, - - }); - - final BorderSide borderSide; - - final EdgeInsetsGeometry insets; - - @override - BoxPainter createBoxPainter([VoidCallback? onChanged]) { - return _UnderlinePainter(this, onChanged, border: border); - } - - Rect _indicatorRectFor(Rect rect, TextDirection textDirection) { - final Rect indicator = insets.resolve(textDirection).deflateRect(rect); - final isValid = indicatorWidth != null && indicatorWidth! < indicator.width; - final left = isValid ? indicator.left + indicatorWidth! : indicator.left; - final width = isValid ? indicatorWidth! : indicator.width; - return Rect.fromLTWH( - left, - indicator.bottom - borderSide.width, - width, - borderSide.width, - ); - } -} - -/// 自定义TabBar指示器画笔 -class _UnderlinePainter extends BoxPainter { - final UnderlineTabIndicator decoration; - - final TabBarIndicatorShape? border; - - _UnderlinePainter(this.decoration, VoidCallback? callback, {this.border}): super(callback); - - @override - void paint(Canvas canvas, Offset offset, ImageConfiguration configuration) { - final Rect rect = offset & configuration.size!; - final TextDirection textDirection = configuration.textDirection!; - final Rect indicator = decoration._indicatorRectFor(rect, textDirection).deflate(decoration.borderSide.width / 2.0); - final TabBarIndicatorShape border = this.border ?? TabBarIndicatorShape.round; - final StrokeCap strokeCap = border == TabBarIndicatorShape.round ? StrokeCap.round : StrokeCap.square; - final Paint paint = decoration.borderSide.toPaint()..strokeCap = strokeCap; - canvas.drawLine(indicator.bottomLeft, indicator.bottomRight, paint); - } - -} \ No newline at end of file diff --git a/assistant-flutter/lib/common/assistant_tabbar.dart b/assistant-flutter/lib/common/assistant_tabbar.dart deleted file mode 100644 index 9f2e963948..0000000000 --- a/assistant-flutter/lib/common/assistant_tabbar.dart +++ /dev/null @@ -1,106 +0,0 @@ -/** - * 通用TabBar封装 - * 在原生TabBar基础上加入Halo的设计风格 - */ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart' hide UnderlineTabIndicator; -import 'package:assistant/common/assistant_colors.dart'; -import 'package:assistant/common/assistant_tab_indicator.dart'; - -class AssistantTabBar extends StatelessWidget { - - static const DEFAULT_LABEL_STYLE = const TextStyle( - fontWeight: FontWeight.bold - ); - - static const DEFAULT_UNSELECTED_LABEL_STYLE = const TextStyle( - fontWeight: FontWeight.normal - ); - - static const DEFAULT_DECORATION = const BoxDecoration( - border: const Border( - bottom: const BorderSide( - width: 1.0, - color: AssistantColors.color_eeeeee - ) - ) - ); - - final List tabs; - final TabController? controller; - final Color? labelColor; - final TextStyle? labelStyle; - final Color? unselectedLabelColor; - final TextStyle? unselectedLabelStyle; - final Decoration? indicator; - final TabBarIndicatorSize? indicatorSize; - final Color? indicatorColor; - - /// TabBar的边距 - final Decoration? border; - - /// 指示器的宽度 - /// 默认情况下为空,则会根据[TabBarIndicatorSize]确定指示器宽度大小 - /// 否则指示器的宽度为传入的值大小 - final double? indicatorWidth; - - /// 指示器边角的形状 - final TabBarIndicatorShape? indicatorBorder; - - final double? indicatorWeight; - final EdgeInsetsGeometry? indicatorPadding; - - const AssistantTabBar({ - Key? key, - required this.tabs, - this.controller, - this.border, - this.labelColor, - this.labelStyle, - this.unselectedLabelColor, - this.unselectedLabelStyle, - this.indicator, - this.indicatorColor, - this.indicatorSize, - this.indicatorBorder, - this.indicatorWidth, - this.indicatorWeight, - this.indicatorPadding, - }) : super(key: key); - - @override - Widget build(BuildContext context) { - double indicatorWeight = this.indicatorWeight ?? 3.0; - double indicatorWidth = this.indicatorWidth ?? 20; - Color indicatorColor = this.indicatorColor ?? Theme.of(context).indicatorColor; - Decoration indicator = this.indicator ?? UnderlineTabIndicator( - borderSide: BorderSide( - width: indicatorWeight, - color: indicatorColor, - ), - border: indicatorBorder, - indicatorWidth: indicatorWidth - ); - return Theme( - data: ThemeData( - splashColor: Colors.transparent, // 点击时的水波纹颜色设置为透明 - highlightColor: Colors.transparent // 点击时的背景高亮颜色设置为透明 - ), - child: DecoratedBox( - decoration: border ?? DEFAULT_DECORATION, - child: TabBar( - tabs: tabs, - indicator: indicator, - controller: controller, - labelStyle: labelStyle ?? DEFAULT_LABEL_STYLE,// Tab选中字体样式 - labelColor: labelColor ?? AssistantColors.color_primary,// Tab选中字体颜色 - unselectedLabelColor: unselectedLabelColor ?? AssistantColors.color_666666,// Tab未选中字体颜色 - unselectedLabelStyle: unselectedLabelStyle ?? DEFAULT_UNSELECTED_LABEL_STYLE,// Tab未选中字体样式 - indicatorSize: indicatorSize ?? TabBarIndicatorSize.label,// 指示器宽度计算模式 - indicatorPadding: indicatorPadding ?? EdgeInsets.zero// 指示器内边距 - ) - ) - ); - } - -} \ No newline at end of file diff --git a/assistant-flutter/lib/common/assistant_tabbar_view.dart b/assistant-flutter/lib/common/assistant_tabbar_view.dart deleted file mode 100644 index 14c49533a7..0000000000 --- a/assistant-flutter/lib/common/assistant_tabbar_view.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - -class AssistantTabBarView extends StatelessWidget { - final bool flex; - final List children; - final TabController? controller; - - const AssistantTabBarView({ - this.flex: true, - this.controller, - required this.children - }); - - @override - Widget build(BuildContext context) { - Widget child = TabBarView( - controller: controller, - children: children - ); - if (flex) child = Flexible(child: child); - return child; - } - -} \ No newline at end of file