Flutter 学习中遇到问题的一些分享

分享一些我在学习过程中遇到的问题

1.Android启动白屏

一些配置比较低的手机上运行测试包时会有一个非常久的启动白屏,当然打成正式包后会极大的缩短这个时间,但还是很明显的。
在安卓原生开发中我们都需要对apk启动速度进行优化,这需要从很多方向去考虑,其中有一个就是闪屏图片。我们看到的启动白屏就是没有修改过的闪屏,在flutter工程的android包里,我们找到AndroidManif.xml文件,里面的安卓样式设置是:

        <activity
            ...
            android:theme="@style/LaunchTheme"
            ...
           >

这个样式是在res/values/styles.xml里

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
        <!-- Show a splash screen on the activity. Automatically removed when
             Flutter draws its first frame -->
        <item name="android:windowBackground">@drawable/launch_background</item>
    </style>
</resources>

可以看到这个设置就是在绘制出第一帧前显示的一个drawable,看看drawable里写了什么

<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/white" />

    <!-- You can insert your own image assets here -->
    <!-- <item>
        <bitmap
            android:gravity="center"
            android:src="@mipmap/launch_image" />
    </item> -->
</layer-list>

很简单的一个白色背景,结合官方下面给出的注释,可以自己添加一个图片进来。
所以想解决启动时那个难看的白屏,只需要在这里加上背景图作为启动闪屏背景就行了,如果想做一些动效和炫酷的闪屏过渡效果,大家可以参考一些原生的闪屏优化文章。

2.Flutter工程里看安卓代码各种飘红

有时候我们需要在安卓包里去修改一些代码,或者编写一些方法时往往打开后发现满屏的红色警告,而且还没有联想和提示,其实只要点击右上角的


或者在安卓文件上右击选择



就会生成一个新的工作空间,你在那边修改的代码会自动同步到flutter工程中

3.Text文字下划线

Text的decoration默认是TextDecoration.none
不知道什么原因,有时候定义的Text下面会出现两条黄色的下划线,明明没有设置decoration的样式,此时要去掉下面的下划线只需要在style下面的TextStyle增加属性decoration: TextDecoration.none

4.Flutter中的动画
..addStatusListener((state) {

        print("animationstate:${state}");

        if(state == AnimationStatus.completed){

          animationController.reverse();

        }else if(state == AnimationStatus.dismissed){

          animationController.forward();

        }

      });

animationController.forward();

forward对应completed

reverse对应dismissed

5.组件通信

flutter组件的通信方式有很多种,比如回调,eventbus,Notification等。
用Notification时要注意dispatch方法中传的context必须和他监听的context是同一个Widget的,否则是不会回调的,可以在监听的组件中赋值给GlobalKey,然后在发送的时候传入key.currentContext。
GlobalKey会分配一个唯一的key,并且可以通过key.currentContext获取到这个key的context

以上是学习过程中自己总结的,如有错误希望指出,在后面的学习中会持续更新

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,554评论 0 17
  • 如何安装 Flutter 请点击这里 1、Flutter 是什么? Flutter是一款移动应用程序SDK,包含框...
    大王叫我来巡山_Cong阅读 1,421评论 0 9
  • 开始今天的拆页前,我们先了解什么是自我效能信念。 P269 (三)自我效能信念至此已讨论了好奇心和学生对学习任务的...
    SelinaYin阅读 232评论 0 1
  • 愿你有皮鞋也有跑鞋,喝茶也喝酒。 愿你品山珍海味,也尝街头小吃。 愿你有勇敢的朋友,有牛逼的对手。 愿你对过往的一...
    WoodEast一朵闲云阅读 464评论 2 1
  • 2017年厦门人民生活状况: 一.城镇 1.1.城镇居民人均可支配收入:50019元; 1.2.城镇居民人均生活消...
    a956099d8e3a阅读 198评论 0 0