Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何使用“获取偏移量”;webview_flatter";?_Flutter_Dart - Fatal编程技术网

Flutter 如何使用“获取偏移量”;webview_flatter";?

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

我想要的是,当下拉webview页面时滑动条隐藏,当将webview页面拉到顶部时滑动条显示,我将webview与CustomScrollView、滑动条和滑动条相结合,我认为这是有效的。但是我需要监听webview偏移来控制滑动应用条

代码:

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");
  }
}