zoukankan      html  css  js  c++  java
  • flutter中的小技巧

      一、如何去掉右上角的DEBUG标签?

        1、

    return MaterialApp(
          home: HomeScreen(),
          debugShowCheckedModeBanner: false,//去掉右上角DEBUG标签
        );

        2、构建release版本;

      二、SingleTickerProviderStateMixin是什么混入?

    初始化animationController的时候需要一个TickerProvider类型的参数Vsync参数,所以需要我们混入TickerProvider的子类SingleTickerProviderStateMixin

      三、operator重载操作符

    这里用js来举例,dart 判断两值相等,可以使用 == ,对一些基础数据类型进行判断。

    如果你的需求是判断自定义类型相等,== 就不行了,这时候就要用===,但是dart不同于js,没有===。

    但dart提供了operator重载操作符,这就是使用它的原因。

    那如何使用呢,当然不能 A operator B 这么用了(js里当然可以 A === B),operator其实是类内部实现的,你在创建类的时候,就通过operator,为这个类提供一个对比方法,注意,dart是将这种对比,写成了自己的方法,栗子如下:

    class A {
      bool operator ==(dynamic y) {
        return y == 1;
      }
    }
      
    main() {
      var a = new A();
      print(a == 1); // true
      print(a == 2); // false
    }

    看到没,这个对比的过程,被写成了类内部的一个方法。

      四、退出

    exit(1);///异常退出
    exit(0);///常规退出

      五、查看打包文件大小

    flutter build apk --target-platform=android-arm /// Android32位 输出Built build/app/outputs/apk/release/app-release.apk (4.2MB)

    flutter build apk --target-platform=android-arm64 /// Android64位 输出Built build/app/outputs/apk/release/app-release.apk (4.6MB)

    flutter build ios && tar -zcf build/app.ipa build/ios/iphoneos/Runner.app && ls -lh build/app.ipa /// ios输出  example/helloworld app (as of this writing) is 8.3 MB

      六、修改flutter应用名

        1、ios

          Info.plist =>  <key>CFBundleName</key><string>XXXXX<string/>

        2、Android

          AndroidManifest.xml => android:label="XXXXX"

      七、修改应用图标

        1、ios

          AppIcon.appiconset内替换相应分倍率icon,同时更新同目录的Contents.json文件;

        2、Android

          mipmap内替换相应分倍率icon,同时更新AndroidManifest.xml 文件;

      八、Text下面出现黄色双下划线

    style: TextStyle(
    decoration: TextDecoration.none
    )

      因为没有可继承的祖先样式widget;

      九、如何去掉Buttonwidget的点击效果

      GestureDetector(
         child: IconButton(
            icon: Icon(Icons.print),
            color: Colors.black,
            onPressed: null,
         ),
         onTap: (){
           print(123);
         },
     ),

      button没有onPressed会默认为禁用状态,置灰色,此时是没有点击效果的,通过color控制图标颜色,外面包一层GestureDetector来给button添加点击回调。

      如果可以接受button的点击效果,可以使用button自带的onPressed回调;

      十、TextField Widget 添加autofocus: true属性时,会报RenderBox was not laid out: RenderEditable#6beb5 NEEDS-LAYOUT NEEDS-PAINT ???

      别慌,1.21上的bug,flutter issues (bug发现时间1月13,当你看到这个问题的时候,可能我们的flutter团队工程师已经修复了这个bug)

      十一、滚动View撑满屏,无法被Column包括问题

    1、View外面包裹Expanded;

    2、View Widget添加 shrinkWrap: true 属性;

      实际都是限制View的尺寸;

      十二、flutter中的度数

    import 'dart:math' as math;

    math.pi   /// 180deg

    math.pi / 2    /// 90deg

    math.pi * 2   /// 360deg

      十三、Material设计规范中状态栏、导航栏、ListTile高度?

    分别为24、56、56 

    屏幕高度 

    MediaQuery.of(context).size.height

      

      十四、flutter中的颜色转换

     ///颜色是一个字符串变量

    var c = "dc380d";
    Color(int.parse(c,radix:16)|0xFF000000) //通过位运算符将Alpha设置为FF Color(int.parse(c,radix:16)).withAlpha(255) //通过方法将Alpha设置为FF

      十五、指定当前系统

     debugDefaultTargetPlatformOverride=TargetPlatform.iOS;

    print(defaultTargetPlatform); /// 会输出TargetPlatform.iOS

    ///上面代码即在Android中运行后,Flutter APP就会认为是当前系统是iOS,Material组件库中所有组件交互方式都会和iOS平台对齐,defaultTargetPlatform的值也会变为TargetPlatform.iOS

      十六、

  • 相关阅读:
    4412开发板Android教程——Android平台简介
    CF621E Wet Shark and Blocks(矩阵加速DP)
    CF963B Destruction of a Tree(高级DFS)
    CF474E Pillars(离散化+线段树+保存DP路径)
    CF1214E Petya and Construction Set(树上构造)
    CF360B Levko and Array(DP+二分答案)
    CF1060E Sergey and Subway(公式推导+树上信息统计)
    CF641E Little Artem and Time Machine(时间离散化+平衡树套树状数组)
    CF264C Choosing Balls(保留最大值、次大值+DP)
    CF571B. Minimization(DP)
  • 原文地址:https://www.cnblogs.com/webcabana/p/12133284.html
Copyright © 2011-2022 走看看