const String kSpaNavigationMonitorScript = ''' (function() { // Monitor Instagram's SPA navigation and notify Flutter on every URL change. // Instagram uses history.pushState — onLoadStop won't fire for these transitions. // This is injected at document start so it wraps pushState before Instagram does. const originalPushState = history.pushState; const originalReplaceState = history.replaceState; function notifyUrlChange(url) { if (window.flutter_inappwebview) { window.flutter_inappwebview.callHandler( 'UrlChange', url || window.location.href ); } } history.pushState = function() { originalPushState.apply(this, arguments); setTimeout(() => notifyUrlChange(arguments[2]), 100); }; history.replaceState = function() { originalReplaceState.apply(this, arguments); setTimeout(() => notifyUrlChange(arguments[2]), 100); }; window.addEventListener('popstate', () => notifyUrlChange()); })(); ''';