browser_page.dart 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import 'package:flutter/material.dart';
  2. import 'package:flutter/services.dart';
  3. import 'package:flutter_inappwebview/flutter_inappwebview.dart';
  4. import 'package:flutter_screenutil/flutter_screenutil.dart';
  5. import 'package:get/get.dart';
  6. import 'package:webview_flutter/webview_flutter.dart';
  7. import '../../base/base_page.dart';
  8. import '../../resource/assets.gen.dart';
  9. import '../../resource/colors.gen.dart';
  10. import '../../router/app_pages.dart';
  11. import 'browser_controller.dart';
  12. class BrowserPage extends BasePage<BrowserController> {
  13. const BrowserPage({super.key});
  14. static start(String url) {
  15. Get.toNamed(RoutePath.browser, arguments: url);
  16. }
  17. @override
  18. Widget buildBody(BuildContext context) {
  19. return PopScope(
  20. canPop: true,
  21. onPopInvokedWithResult: (didPop, result) async {
  22. if (didPop) {
  23. return;
  24. }
  25. await controller.handleBack();
  26. },
  27. child: Scaffold(
  28. backgroundColor: Colors.transparent,
  29. appBar: AppBar(
  30. centerTitle: true,
  31. systemOverlayStyle: SystemUiOverlayStyle.dark,
  32. backgroundColor: Colors.transparent,
  33. title: Obx(
  34. () => Text(
  35. controller.title.value,
  36. style: TextStyle(
  37. fontSize: 17.sp,
  38. color: ColorName.primaryTextColor,
  39. ),
  40. ),
  41. ),
  42. leading: IconButton(
  43. icon: SizedBox(
  44. width: 24.w,
  45. height: 24.w,
  46. child: Assets.images.iconBlackBack.image(),
  47. ),
  48. // Custom icon
  49. onPressed: () {
  50. Get.back();
  51. },
  52. ),
  53. ),
  54. body: _buildContentView(),
  55. ),
  56. );
  57. }
  58. Widget _buildContentView() {
  59. return InAppWebView(
  60. initialUrlRequest: URLRequest(url: WebUri(controller.url)),
  61. onWebViewCreated: (webController) =>
  62. controller.webViewController = webController,
  63. onTitleChanged: (webController, title) =>
  64. controller.title.value = title ?? '',
  65. );
  66. }
  67. }