global_web_page.dart 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import 'package:cs_resources/theme/app_colors_theme.dart';
  2. import 'package:flutter/material.dart';
  3. import 'package:plugin_basic/dialog/country_code_selecter.dart';
  4. import 'package:plugin_basic/router/basic_page_router.dart';
  5. import 'package:shared/utils/log_utils.dart';
  6. import 'package:hooks_riverpod/hooks_riverpod.dart';
  7. import 'package:widgets/ext/ex_widget.dart';
  8. import 'package:widgets/my_appbar.dart';
  9. import 'package:widgets/widget_export.dart';
  10. import '../widget/webview_page.dart';
  11. import 'package:auto_route/auto_route.dart';
  12. /*
  13. * 全局的公共Web页面,兼容网页与富文本展示
  14. */
  15. @RoutePage()
  16. class GlobalWebPage extends HookConsumerWidget {
  17. final bool isShowAppBar;
  18. final String initialUrl;
  19. final String title;
  20. const GlobalWebPage({
  21. Key? key,
  22. @PathParam('isShowAppBar') required this.isShowAppBar,
  23. @PathParam('initialUrl') required this.initialUrl,
  24. @PathParam('title') required this.title,
  25. }) : super(key: key);
  26. //启动当前页面
  27. static void startInstance({
  28. required BuildContext context,
  29. required String title,
  30. required String url,
  31. bool isShowAppBar = true,
  32. }) {
  33. context.router.push(GlobalWebPageRoute(isShowAppBar: isShowAppBar, initialUrl: url, title: title));
  34. }
  35. @override
  36. Widget build(BuildContext context, WidgetRef ref) {
  37. Log.d("GlobalWebPage 的参数 isShowAppBar:$isShowAppBar title:$title initialUrl:$initialUrl ");
  38. if (initialUrl.startsWith('http')) {
  39. //网页加载
  40. return WebViewPage(
  41. showAppbar: isShowAppBar,
  42. initialUrl: initialUrl,
  43. arguments: {'title': title},
  44. );
  45. } else {
  46. //富文本加载
  47. return Scaffold(
  48. backgroundColor: context.appColors.whiteBG,
  49. appBar: isShowAppBar
  50. ? MyAppBar.appBar(
  51. context,
  52. title ?? "",
  53. backgroundColor: context.appColors.backgroundWhite,
  54. )
  55. : null,
  56. body: SafeArea(
  57. bottom: true,
  58. top: false,
  59. child: SingleChildScrollView(
  60. scrollDirection: Axis.vertical,
  61. physics: const BouncingScrollPhysics(),
  62. child: Html(data: initialUrl).paddingOnly(left: 10, right: 10),
  63. ),
  64. ));
  65. }
  66. }
  67. }