import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:hive/hive.dart';
import 'package:money_project/models/user_application_model.dart';
import 'package:money_project/screens/profile_screen.dart';
import 'package:money_project/services/api_service.dart';

import '../widgets/custom_bottom_navigation_bar.dart';
import 'help_screen.dart';
import 'loan_screen.dart';
import 'menu/menu_screen.dart';

class HomeScreen extends StatefulWidget {
  const HomeScreen({Key? key}) : super(key: key);

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  // Текущий индекс вкладки
  int _currentIndex = 0;
  UserApplicationModel? _userModel;
  late List<Widget> _pages;
  //region var WB
  bool show = false;
  bool _isWebViewReady = false;
  HeadlessInAppWebView? headlessWebView;
  InAppWebViewController? webViewController;
  //endregion

  @override
  void dispose() {
    headlessWebView?.dispose();
    super.dispose();
  }

  void _handleTargetCallback() {
    initializeHeadlessWebView(ApiService.last!);
    WidgetsBinding.instance.addPostFrameCallback((_) {
      setState(() {
        show = true;
      });
    });
  }

  @override
  void initState() {
    super.initState();
    _pages = [
      LoanScreen(onTarget: _handleTargetCallback), // Займ
      const HelpScreen(), // Помощь
      const MenuScreen(), // Меню
      const UserProfileScreen(), // Профиль
    ];
  }

  // TARGET - WB

  void initializeHeadlessWebView(String url) {
    headlessWebView = HeadlessInAppWebView(
        initialUrlRequest: URLRequest(url: WebUri(url)),
        onLoadStop: (controller, url) async {
          if (kDebugMode) {
            print("onLoadStop");
          }
          var anchorText = "клиентов";
          // JS-код, который находит узел с anchorText
          // и удаляет все последующие siblings
          final js = """
            (function() {
              // Ищем элемент по включающемуся тексту
              var all = document.body.querySelectorAll('*');
              var anchor = null;
              for (var i=0; i<all.length; i++) {
                if (all[i].innerText && all[i].innerText.includes("$anchorText")) {
                  anchor = all[i];
                  break;
                }
              }
              if (!anchor) return 'Anchor not found';

              // Удаляем все узлы, идущие после anchor в дереве
              var next = anchor.nextSibling;
              var removed = 0;
              while (next) {
                var toRemove = next;
                next = next.nextSibling;
                toRemove.parentNode.removeChild(toRemove);
                removed++;
              }
              return 'Removed ' + removed + ' nodes';
            })();
          """;

          // Выполняем JS и, опционально, получаем результат
          var result = await controller.evaluateJavascript(source: js);
          print(result); // для отладки

          setState(() {
            _isWebViewReady = true;
          });
        },
        onWebViewCreated: (controller) {
          if (kDebugMode) {
            print('onWebViewCreated');
          }
        },
        onConsoleMessage: (controller, message) {
          if (kDebugMode) {
            print("onConsoleMessage $message.message ");
          }
        });
    headlessWebView?.run();
  }

  // Метод, вызываемый при нажатии на пункты BottomNavigationBar
  void _onNavBarTap(int index) {
    setState(() {
      _currentIndex = index;
    });
  }

  Future<UserApplicationModel?> _loadUser() async {
    final box = await Hive.openBox<UserApplicationModel>('currentUser');
    return box.get('user');
  }

  @override
  Widget build(BuildContext context) {
    if (show == true) {
      return Scaffold(
        body: SafeArea(
          child: _isWebViewReady
              ? InAppWebView(
                  initialUrlRequest: URLRequest(url: WebUri(ApiService.last!)),
                  onWebViewCreated: (controller) {
                    webViewController = controller;
                  },
                )
              : Center(
                  child: CircularProgressIndicator(
                    valueColor: AlwaysStoppedAnimation<Color>(Colors.black),
                  ),
                ),
        ),
      );
    }

    return Scaffold(
      // Отображаем нужный экран в зависимости от _currentIndex
      body: _pages[_currentIndex],

      bottomNavigationBar: CustomBottomNavBar(
        currentIndex: _currentIndex,
        onTap: _onNavBarTap,
      ),
    );
  }
}


flutter: Removed 84 nodes
flutter: Removed 84 nodes

but ui not changed