美文网首页
记录 flutter 开发遇到的神奇细小问题

记录 flutter 开发遇到的神奇细小问题

作者: 一个冬季 | 来源:发表于2023-11-30 14:15 被阅读0次
    • TabBar 底部有一条很长的白色的线条
    • ListView与AppBar结合,滚动ListView,AppBar的颜色被更改了
    • flutter PopScope 拦截 webView 返回按键
    • flutter dialog后面,顶部,底部,有一点点的小小的白色
    • TabBar 去掉水波纹点击效果

    TabBar 底部有一条很长的白色的线条

    TabBar(
     dividerColor: Colors.transparent,//去除白色线
     dividerHeight: 0,
    )
    
    //可能你们需要
    //Flutter 自定义 TabBar indicator 的宽度和圆角
    //https://blog.csdn.net/qq_42351033/article/details/115820289
    

    ListView与AppBar结合,滚动ListView,AppBar的颜色被更改了

    AppBar(
      scrolledUnderElevation: 0//防止滚动改变appBar的颜色
    );
    

    flutter PopScope 拦截 webView 返回按键

    @override
      Widget build(BuildContext context) {
        //配置android ios
        PlatformWebViewControllerCreationParams params =
        const PlatformWebViewControllerCreationParams();
    
        if (WebViewPlatform.instance is WebKitWebViewPlatform) {
          params = WebKitWebViewControllerCreationParams
              .fromPlatformWebViewControllerCreationParams(
            params,
          );
        } else if (WebViewPlatform.instance is AndroidWebViewPlatform) {
          params = AndroidWebViewControllerCreationParams
              .fromPlatformWebViewControllerCreationParams(
            params,
          );
        }
    
        final WebViewController webViewController =
        WebViewController.fromPlatformCreationParams(
          params,
        );
        webViewController.setJavaScriptMode(JavaScriptMode.unrestricted);
        webViewController.loadRequest(Uri.parse(requestUrl));
    
        return Scaffold(
            resizeToAvoidBottomInset: false,
            body: PopScope(
              canPop: false,//false 表示拦截物理按键,true不拦截
              onPopInvoked: (didPop) async{//不管canPop是否为true,onPopInvoked都会调用
                var canBack = await webViewController.canGoBack();
                if (canBack) {
                  // 当网页还有历史记录时,返回webview上一页
                  await webViewController.goBack();
                }
              }, child:  Expanded(child: WebViewWidget(controller: webViewController))),
            ),
        );
      }
    

    flutter dialog后面,顶部,底部,有一点点的小小的白色

    异常.jpg

    解决办法

     增加 backgroundColor: Colors.transparent
     Future show() async{
        return await Get.dialog(Dialog(backgroundColor: Colors.transparent,child: _ContainDialog(),));
      }
    

    TabBar 去掉水波纹点击效果

    .....
     title: TabBar(
              splashFactory: NoSplashFactory(),
              dividerColor: Colors.transparent,
              dividerHeight: 0,
    ....)
    
    class NoSplashFactory extends InteractiveInkFeatureFactory {
      @override
      InteractiveInkFeature create({required MaterialInkController controller, required RenderBox referenceBox, required Offset position, required Color color, required TextDirection textDirection, bool containedInkWell = false, RectCallback? rectCallback, BorderRadius? borderRadius, ShapeBorder? customBorder, double? radius, VoidCallback? onRemoved}) {
       return _NoInteractiveInkFeature(controller: controller,referenceBox: referenceBox,color: color);
      }
    }
    
    class _NoInteractiveInkFeature extends InteractiveInkFeature {
      _NoInteractiveInkFeature({required super.controller, required super.referenceBox, required super.color});
    
      @override
      void paintFeature(Canvas canvas, Matrix4 transform) {
      }
    }
    

    相关文章

      网友评论

          本文标题:记录 flutter 开发遇到的神奇细小问题

          本文链接:https://www.haomeiwen.com/subject/nswawdtx.html