Flutter

flutter 修改 复制拷贝(copy paste) 弹出菜单

2020-09-28  本文已影响0人  微风_10a5

今天来和大家分享一个比较冷门的知识点,怎么修改 "复制拷贝" 弹出菜单的样式! 这个菜单弹出来也比较简单,就是长按文字或者是长按TextField.

我们先来看看,不修改样式会有什么样的问题,请查看下图

image.png

这个图想说明的是,当用户长按 TextField 会出现 "paste" 菜单( 但因为文字颜色原因,我们看到的是黑乎乎的一个方块).那正常的情况是什么样子的呢,请看下图


image.png
出现的原因

当我们在main文件主题(ThemeData)里面设置了cardColor的话,就有可能出现这个问题,如下

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primaryColor: Color(0xff505050),
        cardColor: Color(0xff000000),
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: FirstPage(),
    );
  }
}

上面的代码设置了主颜色primaryColor为深灰色,cardColor为黑色;其中cardColor会影响paste菜单的文字为黑色,导致背景色是黑色,文字也是黑色,所以看上去就是黑乎乎的一个方块

解决办法

方法一
当然是能不用cardColor这个主题,就不用它,就不会出现这个问题了,这样也不会出现全是黑色的情况.

方法二
假如,你的项目,已经用了cardColor这个主题,并且已经上线了一段时间,正式运行了.这个可能就需要方法二了.就是再加一句代码brightness: Brightness.dark,就能解决此问题,如下


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primaryColor: Color(0xff505050),
        cardColor: Color(0xff000000),
        brightness: Brightness.dark,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: FirstPage(),
    );
  }
}

温馨提醒一下
brightness: Brightness.dark,虽然只加了一行代码,就是把主题改为黑色,但会影响到整个app的色调,有些可能就会出现问题,希望小伙伴们知道. 慎用~~慎重使用Brightness.dark

结尾

最后再上一张,正常的效果图


image.png

感觉对小伙伴们有点帮助的话,欢迎点赞,加关注哦,后面会分享更多干货~~

上一篇下一篇

猜你喜欢

热点阅读