Flutter WebView, нуждаясь в двойном щелчке, чтобы повторно обретатьIOS

Программируем под IOS
Ответить
Anonymous
 Flutter WebView, нуждаясь в двойном щелчке, чтобы повторно обретать

Сообщение Anonymous »

В моем приложении Flutter у меня есть страница, которая загружает веб -сайт с использованием WebView. URL -адрес для веб -просмотра принимается через API, который хранится внутри переменной с именем pageurl . Когда пользователь нажимает на BottomNavbar , чтобы перейти на указанный экран, WebView будет перезагружаться (или повторно, не уверенный в правильной терминологии здесь). Он работает нормально. < /P>
Однако проблема, с которой я возникает, заключается в том, что, когда пользователь переходит на эту страницу, им нужно снова нажать кнопку для повторного повторного использования страницы. Я хочу, чтобы это было так, чтобы всякий раз, когда пользователь нажимает на кнопку для страницы, она просто повторно повторно повторно. Я приложил свой код ниже.class BottomNavbar extends StatelessWidget {
const BottomNavbar({super.key});

@override
Widget build(BuildContext context) {
return GetBuilder(
builder: (controller) => WillPopScope(
onWillPop: () async {
if (controller.tabIndex != 0) {
controller.updateIndex(0);
return false;
} else {
bool closeApp = await showDialog(
context: context,
builder: (context) => AlertDialog(
// Alert Dialog
],
),
);
return closeApp;
}
},
child: Scaffold(
extendBody: true,
appBar: AppbarWidget(tabIndex: controller.tabIndex),
bottomNavigationBar: CurvedNavigationBar(

index: controller.tabIndex,
onTap: (val) {
controller.updateIndex(val);
},
items: const [
Icon(Icons.home_outlined, color: Colors.white),
Icon(Icons.maps_home_work_outlined, color: Colors.white),
Icon(Icons.access_time, color: Colors.white),
],
),
body: Padding(
padding: EdgeInsets.only(
top: MediaQuery.of(context).size.height * 0.018),
child: SafeArea(
bottom: false,
child: IndexedStack(
index: controller.tabIndex,
children: const [
PageOne(),
PageTwo(),
PageThree(),
],
),
),
),
),
),
);
}
}

page2_screen.dart
class PageTwo extends StatefulWidget {
const PageTwo({super.key});

@override
State createState() => _PageTwoState();
}

class _PageTwoState extends State {
late WebViewController webViewController;
String pageUrl = '';

@override
void initState() {
super.initState();
initializeWebView();
fetchData();
}

void initializeWebView() {
webViewController = WebViewController()
..setJavaScriptMode(JavaScriptMode.unrestricted)
..setBackgroundColor(const Color(0x00000000))
..setNavigationDelegate(
NavigationDelegate(
onPageFinished: (url) => _injectJavaScript(),
),
);
}

Future fetchData() async {
// Getting URL for the webview
}

void _injectJavaScript() {
String jsCode = """
// Injecting JS
""";
webViewController.runJavaScript(jsCode);
}

@override
Widget build(BuildContext context) {
return GetBuilder(
builder: (bottomNavbarController) {
if (bottomNavbarController.refreshMenuScreen) {
initializeWebView();
fetchData();
bottomNavbarController.refreshMenuScreen = false;
}

return Scaffold(
backgroundColor: const Color(0xFF000000),
body: Padding(
padding: EdgeInsets.only(
bottom: MediaQuery.of(context).size.height * 0.01),
child: SafeArea(
child: WebViewWidget(
controller: webViewController,
),
),
),
);
},
);
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... initialize
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»