For a number of weeks our App Dashboard (https://developers.facebook.com/apps) has been blank, tried multiple browsers and computers - still experience the same result.
This morning upon accessing an app via Business Settings / Apps and Open in App Dashboard, going App Settings / Basic we are seeing a blank screen where the content should be.
Can anyone shed any light or offer assistance with this?

var adRequested by remember { mutableStateOf(false) } if (AdEventManager.isInternetAvailable() && !adRequested &&          isNativeAdVisible && !App.isAppPremium) {     AndroidViewBinding(         NativeNoMediaCLayoutBinding::inflate,         modifier = Modifier             .fillMaxWidth()             .weight(1f)             .navigationBarsPadding()     ) {         App.mInstance?.adsManager?.loadNativeAd(             context as Activity,             adFrame,             AdsManager.NativeAdType.NOMEDIA_MEDIUM,             context.getString(R.string.ADMOB_NATIVE_WITHOUT_MEDIA_V2),                               shimmerLayout)     }     adRequested = true } 

so here i want that when the ad is Loaded once then it should not be loaded again and again whenever the screen is recomposed so we go with a state that tracks that if the ad is loaded or not but the issue we have here is that even we cant make a side effect that will run this block only when its true.As by this code request is sent one time but when the screen recompose the ad is hidden as we have that in the if statement So how to make sure that the ad is loaded once and if was loaded then that View should remain same and don't reload

As part of our ongoing efforts to optimize user experience and increase engagement with our Progressive Web Application (PWA) game, we have encountered a challenge when attempting to showcase install prompts within the Facebook App's WebView version.
Our team has noticed that, unlike in standard web browsers, the Facebook App's WebView restricts the display of PWA install prompts. This limitation raises concerns for us as we aim to seamlessly guide users to download our PWA game directly from their Facebook experience.
Could you kindly shed light on the specific technical aspects or policy considerations that contribute to the suppression of PWA install prompts in the Facebook App's WebView? Additionally, if there are any alternative approaches or best practices that would facilitate a smoother integration of PWA install prompts within the Facebook App's WebView, we would greatly appreciate your guidance.

This is my Ad provider

import 'package:bg_remover/services/ads_helper.dart'; import 'package:flutter/material.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; class AdaptiveBannerAdProvider with ChangeNotifier{   BannerAd? _anchoredAdaptiveAd;   bool _isLoaded = false;   BannerAd? get anchoredAdaptiveAd => _anchoredAdaptiveAd;   bool get isAdLoaded => _isLoaded;   Future<void> loadAnchoredAdaptiveAd(BuildContext context) async {     final AnchoredAdaptiveBannerAdSize? size =         await AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(             MediaQuery.of(context).size.width.truncate());     if (size == null) {       debugPrint('Unable to get height of anchored banner.');       return;     }     _anchoredAdaptiveAd = BannerAd(       adUnitId: AdHelper.bannerAdUnitId,       size: size,       request: const AdRequest(),       listener: BannerAdListener(         onAdLoaded: (Ad ad) {           debugPrint('$ad has been >>>>>loaded: ${ad.responseInfo}');           //there was an error of @This AdWidget is already in the Widget tree@           // so for that we apply this widgetsBinding to notify listener           //and place the banner add in FutureBuilder and that's work           // WidgetsBinding.instance.addPostFrameCallback((_) {           //   _isLoaded = true;           //   notifyListeners();           // });           // Ad was not showing when loaded           _isLoaded = true;           notifyListeners();         },         onAdFailedToLoad: (Ad ad, LoadAdError error) {           debugPrint('Anchored adaptive banner failedToLoad: $error');           ad.dispose();         },       ),     );     return _anchoredAdaptiveAd!.load();   }   void disposeAd() {     _anchoredAdaptiveAd?.dispose();   } } 

call it here to display Ad:

 import 'package:bg_remover/utils/routes/routes_name.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:gap/gap.dart'; import 'package:google_mobile_ads/google_mobile_ads.dart'; import 'package:provider/provider.dart'; import '../provider/ads_provider/adaptiveBanner_ad_provider.dart'; import '../utils/colors.dart'; import '../utils/images_assets_path.dart'; import '../utils/strings.dart'; import 'bottom_tabs/home_page.dart'; import 'bottom_tabs/project_page.dart'; import 'bottom_tabs/settings_page.dart'; class HomeFeedPage extends StatefulWidget{   const HomeFeedPage({Key? key}) : super(key: key);   @override   State<HomeFeedPage> createState() => _HomeFeedPageState(); } class _HomeFeedPageState extends State<HomeFeedPage>{   int index = 1;   final List<Widget> pages = const [     ProjectPage(),     HomePage(),     SettingsPage(),   ];   final List<String> icons = [     AssetImages.projectIcon,     AssetImages.inactiveHomeIcon,     AssetImages.settingsIcon,   ];   final List<String> titles = const [     Strings.projects,     Strings.home,     Strings.settings,   ];   void _onIconPressed(int newIndex) {     if (newIndex == 2) {       Navigator.pushNamed(context, RoutesName.settings);     } else {       setState(() {         index = newIndex;       });     }   }   @override   void didChangeDependencies() {     super.didChangeDependencies();     final adaptiveAdProvider =         Provider.of<AdaptiveBannerAdProvider>(context, listen: false);     adaptiveAdProvider.loadAnchoredAdaptiveAd(context);   }   @override   Widget build(BuildContext context) {     return Scaffold(       resizeToAvoidBottomInset: false,       body: Column(         children: [           Expanded(child: pages[index]),           displayAd(),           _buildBottomBar(),         ],       ),     );   }   Widget _buildBottomBar() {     return Container(       padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 4),       color: AppColors.bottomBarColor,       child: Row(         mainAxisAlignment: MainAxisAlignment.spaceAround,         children: List.generate(           icons.length,           (int i) => GestureDetector(             onTap: () => _onIconPressed(i),             child: _buildIconColumn(i),           ),         ),       ),     );   }   Widget _buildIconColumn(int i) {     final bool isActiveHome = index == 1 && i == 1;     final String iconPath = isActiveHome ? AssetImages.homeIcon : icons[i];     return Column(       children: [         AnimatedContainer(           duration: const Duration(milliseconds: 300),           width: 70,           height: 35,           decoration: BoxDecoration(             color: index == i ? AppColors.activeTabColor : Colors.transparent,             borderRadius: BorderRadius.circular(20),           ),           child: Padding(             padding: const EdgeInsets.all(8.0),             child: SvgPicture.asset(               iconPath,               colorFilter: ColorFilter.mode(                 index == i ? AppColors.whiteColor : AppColors.activeColor,                 BlendMode.srcIn,               ),             ),           ),         ),         const Gap(5),         Text(           titles[i],           style: TextStyle(             color: index == i ? AppColors.whiteColor : AppColors.activeColor,             fontWeight: index == i ? FontWeight.w700 : null,           ),         ),       ],     );   }   Widget displayAd() {     return Consumer<AdaptiveBannerAdProvider>(       builder: (context, adProvider, _) {         if (adProvider.isAdLoaded) {           return SizedBox(             width: adProvider.anchoredAdaptiveAd!.size.width.toDouble(),             height: adProvider.anchoredAdaptiveAd!.size.height.toDouble(),             child: AdWidget(ad: adProvider.anchoredAdaptiveAd!),           );         } else {           return Container(             color: AppColors.yellowColor,             width: adProvider.anchoredAdaptiveAd?.size.width.toDouble(),             height: adProvider.anchoredAdaptiveAd?.size.height.toDouble(),             child: Center(               child: Text(                 'Ad is Loading.......',                 style: TextStyle(color: AppColors.whiteColor),               ),             ),           );         }       },     );   }  verride   void dispose() {     Provider.of<AdaptiveBannerAdProvider>(context, listen: false).disposeAd();     super.dispose();   } }  @ 

working fine when I go to next having same process to display ad show error : Flutter :- This AdWidget is already in the Widget tree. How to disable this exception. And what does it mean?

Above Code is Working fine on HomeFeed Page. when I go to next having same process to display ad error : Flutter :- This AdWidget is already in the Widget tree. How to disable this exception. And what does it mean?