Flutter 如何使用“获取偏移量”;webview_flatter";?
我想要的是,当下拉webview页面时滑动条隐藏,当将webview页面拉到顶部时滑动条显示,我将webview与CustomScrollView、滑动条和滑动条相结合,我认为这是有效的。但是我需要监听webview偏移来控制滑动应用条 代码:Flutter 如何使用“获取偏移量”;webview_flatter";?,flutter,dart,Flutter,Dart,我想要的是,当下拉webview页面时滑动条隐藏,当将webview页面拉到顶部时滑动条显示,我将webview与CustomScrollView、滑动条和滑动条相结合,我认为这是有效的。但是我需要监听webview偏移来控制滑动应用条 代码: import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; impor
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class WebviewGestureRecognizer extends StatefulWidget {
@override
State<StatefulWidget> createState() => new WebviewGestureRecognizerState();
}
class WebviewGestureRecognizerState extends State<WebviewGestureRecognizer> {
ScrollController _controller = new ScrollController();
WebViewController wvController;
@override
void initState() {
super.initState();
_controller.addListener(() {
// here is the CustomScrollView offset
print(_controller.offset);
});
}
hideAppBar() {
_controller.animateTo(100.0,
duration: new Duration(milliseconds: 1000), curve: Curves.linear);
}
showAppBar() {
_controller.animateTo(0.0,
duration: new Duration(milliseconds: 1000), curve: Curves.linear);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: CustomScrollView(
controller: _controller,
slivers: <Widget>[
SliverAppBar(
title: const Text("webview GuesureRecognizer"),
floating: true,
),
SliverFillRemaining(
hasScrollBody: true,
fillOverscroll: false,
child: WebView(
debuggingEnabled: true,
javascriptMode: JavascriptMode.unrestricted,
gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>[
new Factory<OneSequenceGestureRecognizer>(
() => CustomGestureWidget(),
),
].toSet(),
onWebViewCreated: (WebViewController webViewController) {
webViewController.loadUrl(
"https://www.qq.com",
);
wvController = webViewController;
},
),
),
],
),
);
}
}
导入“包:flift/foundation.dart”;
导入“package:flatter/signatures.dart”;
进口“包装:颤振/材料.省道”;
导入“package:webview_flatter/webview_flatter.dart”;
类WebViewGestureRecognitor扩展StatefulWidget{
@凌驾
State createState()=>新建WebViewGestureRecognitizerState();
}
类WebViewGestureRecognitizerState扩展了状态{
ScrollController _controller=新的ScrollController();
网络视图控制器;
@凌驾
void initState(){
super.initState();
_controller.addListener(){
//这是CustomScrollView偏移量
打印(_controller.offset);
});
}
hideAppBar(){
_控制器。动画(100.0,
持续时间:新的持续时间(毫秒:1000),曲线:Curves.linear);
}
showAppBar(){
_控制器.animateTo(0.0,
持续时间:新的持续时间(毫秒:1000),曲线:Curves.linear);
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
正文:自定义滚动视图(
控制器:_控制器,
条子:[
滑杆(
标题:const Text(“网络视图访客识别器”),
浮动:是的,
),
剩余碎片(
哈斯克罗博迪:没错,
fillOverscroll:false,
孩子:网络视图(
debuggingEnabled:true,
javascriptMode:javascriptMode.unrestricted,
手势识别器:[
新工厂(
()=>CustomGestureWidget(),
),
].toSet(),
onWebViewCreated:(WebViewController WebViewController){
webViewController.loadUrl(
"https://www.qq.com",
);
wvController=webViewController;
},
),
),
],
),
);
}
}
哦,我忘了上课了:
class CustomGestureWidget extends OneSequenceGestureRecognizer {
CustomGestureWidget({PointerDeviceKind kind}) : super(kind: kind);
@override
void addAllowedPointer(PointerDownEvent event) {
print("PointerDownEvent: $event");
startTrackingPointer(event.pointer, event.transform);
resolve(GestureDisposition.accepted);
stopTrackingPointer(event.pointer);
}
@override
String get debugDescription => 'eager';
@override
void didStopTrackingLastPointer(int pointer) {
print("pointer: $pointer");
}
@override
void handleEvent(PointerEvent event) {
print("event: $event");
}
}