我想使用webview_flutterno构建一个简单的应用程序AppBar,带有一个静态 URL,并且只是floatingActionButton在屏幕底部简单地导航到上一页,但我不知道该怎么做。
有人可以给我一些指导方针,这样我就可以尝试让按钮做它应该做的事情吗?
这是带有按钮的应用程序图像:

我不知道该尝试什么,但我正在努力学习,对此感到抱歉 =D
这是我的全部代码:=)
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:flutter/services.dart';
import 'dart:async';
void main () {
runApp(MaterialApp(
title: 'Something',
home: AplicativoB2b(),
debugShowCheckedModeBanner: false,
));
SystemChrome.setEnabledSystemUIOverlays ([]);
}
class AplicativoB2b extends StatefulWidget {
@override
_AplicativoB2bState createState() => _AplicativoB2bState();
}
class _AplicativoB2bState extends State<AplicativoB2b> {
Completer<WebViewController> _controller = Completer<WebViewController>();
@override
Widget build(BuildContext context) {
return Scaffold(
body: WebView(
initialUrl: 'https://google.com',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
),
floatingActionButton: FloatingActionButton(
onPressed: () {
//HELP ME HERE!! =(
},
child: const Icon(Icons.arrow_back),
backgroundColor: Colors.black,
),
// bottomNavigationBar: BottomAppBar(color: Colors.white, child: Container(height: 50.0),),
// floatingActionButtonLocation: FloatingActionButtonLocation.endDocked,
);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
Future<bool> _willPopCallback() async {
WebViewController webViewController = await _controller.future;
bool canNavigate = await webViewController.canGoBack();
if (canNavigate) {
webViewController.goBack();
return false;
} else {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我使用与之前答案不同的代码来完成此操作。我按照本教程让网络视图和浮动按钮正常工作。从那里,很容易给浮动按钮一个后退箭头图标,并让 webview 在单击浮动按钮时返回页面。
要使 webview 在单击浮动按钮时返回页面(将其放入其 onpressed 方法中):
controller.data.goBack();
Run Code Online (Sandbox Code Playgroud)
浮动按钮的图标可以通过这行代码轻松更改:
child: Icon(Icons.arrow_back)
Run Code Online (Sandbox Code Playgroud)
所有不同的按钮都可以在这里找到:链接
这是我的全部代码:
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'dart:async';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'App',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'App'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final Completer<WebViewController> _controller = Completer<WebViewController>();
@override
Widget build(BuildContext context) {
return Scaffold(
body: WebView(
initialUrl: "https://google.com",
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controller.complete(webViewController);
},
),
floatingActionButton: FutureBuilder<WebViewController>(
future: _controller.future,
builder: (BuildContext context,
AsyncSnapshot<WebViewController> controller) {
if (controller.hasData) {
return FloatingActionButton(
child: Icon(Icons.arrow_back),
onPressed: () {
controller.data.goBack();
});
}
return Container();
}
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5515 次 |
| 最近记录: |