global_web_page.dart 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:plugin_basic/utils/ext_get_nav.dart';
  4. import 'package:router/path/router_path.dart';
  5. import 'package:shared/utils/log_utils.dart';
  6. import 'package:shared/utils/screen_util.dart';
  7. import 'package:widgets/my_appbar.dart';
  8. import 'package:widgets/widget_export.dart';
  9. import '../base/base_stateless_page.dart';
  10. import '../widget/webview_page.dart';
  11. /*
  12. * 全局的公共Web页面
  13. */
  14. class GlobalWebPage extends BaseStatelessPage {
  15. GlobalWebPage({super.key});
  16. //启动当前页面
  17. static void startInstance(
  18. String title,
  19. String url, {
  20. bool isShowAppBar = true,
  21. }) {
  22. return Get.start(RouterPath.globalWeb, arguments: {'title': title, 'initialUrl': Uri.encodeFull(url), 'isShowAppBar': isShowAppBar});
  23. }
  24. @override
  25. GetxController createRawController() {
  26. throw UnimplementedError();
  27. }
  28. @override
  29. void initState() {}
  30. @override
  31. Widget buildWidget(BuildContext context) {
  32. bool isShowAppBar = Get.arguments['isShowAppBar'];
  33. String initialUrl = Get.arguments['initialUrl'];
  34. String title = Get.arguments['title'];
  35. Log.d("GlobalWebPage 的参数 isShowAppBar:$isShowAppBar title:$title initialUrl:$initialUrl ");
  36. if (initialUrl.startsWith('http')) {
  37. //网页加载
  38. return WebViewPage(
  39. showAppbar: isShowAppBar,
  40. initialUrl: initialUrl,
  41. arguments: {'title': title},
  42. );
  43. } else {
  44. //富文本加载
  45. return SafeArea(
  46. bottom: true,
  47. top: false,
  48. child: Container(
  49. width: double.infinity,
  50. height: double.infinity,
  51. padding: EdgeInsets.only(top: ScreenUtil.getStatusBarH(context)),
  52. decoration: const BoxDecoration(
  53. gradient: LinearGradient(
  54. colors: [
  55. Color(0xFF091D44),
  56. Color(0xFF245A8A),
  57. Color(0xFF7F7CEC),
  58. ],
  59. begin: Alignment.topCenter,
  60. end: Alignment.bottomCenter,
  61. ),
  62. ),
  63. child: Column(
  64. children: [
  65. MyAppBar.titleBar(context, title),
  66. SingleChildScrollView(
  67. scrollDirection: Axis.vertical,
  68. physics: const BouncingScrollPhysics(),
  69. child: Html(data: initialUrl).paddingOnly(left: 10, right: 10),
  70. )
  71. ],
  72. ),
  73. ),
  74. );
  75. }
  76. }
  77. }