flutter 小tips

常用快捷键:

展开/关闭代码块:   command + .
跳转到 下/上 一个光标位置:   alt + command + →/←(右/左箭头)
去除无用的import头文件:   ctrl +alt + o
全局搜索:   command + shift + f
快速更换/添加/移除widget:鼠标点到要操作的widget上,按下   alt + 回车
一键复制:command + d
flutter代码格式化:Mac:command + alt + f Windows:Ctrl+Alt+L


颜色的各种写法
Color c1 = Color(0xFF3CAAFA);
Color c2 = Color.fromRGBO(60, 170, 250, 0.2);
Color c3 = Color.fromARGB(255, 60, 170, 250);
Color c5 = Colors.blue;
Color c6 = Colors.red[600];

项目不能新建directory的解决办法

解决文件夹中嵌套文件夹呈现 xxx.yyy的格式(按下图取消勾选):
image.png

如何去除Flutter Text底部黄色双划线


flutter 控件随着键盘弹出自适应上下移动 防止遮挡

参考链接


flutter项目拉下来如果有主模块有分模块 需要分别同时点一下这个
image.png

flutter中如何导入插件 .jar包(
image.png

例如MVP模板 StlIdePlugin)

image.png

image.png

flutter 如何创建使用导入的MVP模板
在Android studio顶部菜单栏上 选中STL 打开编辑栏


image.png
[图片上传失败...(image-528efb-1604388904315)]

模板说明


4162352772_25182499055_0E349706-BE37-4813-9718-6A8A1841124B.png

flutter如何引入脚本(多语言 辅助R文件)


image.png

image.png

image.png

image.png

如何跑脚本:


image.png

项目中如何使用:


image.png

附上脚本内容


image.png

flutter 多语言

easy_localization


APP账号密码登录流程:


4013473354_25056636930_1572433628_25056422225_785FBA66-3915-4012-B3D6-4EC6A8B166BB.png

APP自动登录流程


4013473354_25056636141_1572433628_25056460520_509E9CA0-1158-4f78-8335-EC334EB74563.png

flutter 自定义底部切圆角弹框

  void _clickMoreBtn() {
    showModalBottomSheet(
      context: context,
      backgroundColor: Colors.transparent, // 重点!!!
      builder: (BuildContext context) {
        return Container(
          height: 462.h,
          width: double.infinity,
          child: Center(child: OtherLoginWaySheet()),
          decoration: BoxDecoration(
            color: Colors.white,
            borderRadius: BorderRadius.only(
              topLeft: Radius.circular(50.w),
              topRight: Radius.circular(50.w),
            ),
          ),
        );
      },
    );
  }
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:libcommon/res/colors.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:libcommon/generated/codegen_r_loader.g.dart';
import 'package:stl_easy_localization/stl_easy_localization.dart';

class OtherLoginWaySheet extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(children: [
        Padding(
          padding: EdgeInsets.only(top: 80.w, bottom: 40.h),
          child: InkWell(
            onTap: () {
              print("点击QQ登录");
            },
            child: Container(
              width: 240.w,
              child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  SizedBox(
                    width: 56.w,
                    height: 56.w,
                    child: SvgPicture.asset(
                      "assets/svg/fxchat_login_ic_login_qq.svg",
                      package: 'fxchat_login',
                    ),
                  ),
                  SizedBox(width: 20.w),
                  Text(R.fxchat_login_qq_login).tr(),
                ],
              ),
            ),
          ),
        ),
        Padding(
          padding: EdgeInsets.only(top: 30.0.h, bottom: 60.h),
          child: InkWell(
            onTap: () {
              print("点击微博登录");
            },
            child: Container(
              width: 240.w,
              child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  SizedBox(
                    width: 56.w,
                    height: 56.w,
                    child: SvgPicture.asset(
                      "assets/svg/fxchat_login_ic_login_weibo.svg",
                      package: 'fxchat_login',
                    ),
                  ),
                  SizedBox(width: 20.w),
                  Text(R.fxchat_login_weibo_login).tr(),
                ],
              ),
            ),
          ),
        ),
        SizedBox(
          width: 654.w,
          height: 96.h,
          child: FlatButton(
            color: ColorsUtil.hexToColor("#eff1f4"),
            onPressed: () {
              Navigator.of(context).pop();
            },
            child: Text(
              R.fxchat_login_cancel.tr(),
              style: TextStyle(
                  fontSize: 16,
                  fontWeight: FontWeight.w500,
                  color: ColorsUtil.hexToColor("#e61e222b")),
            ),
          ),
        ),
      ]),
    );
  }
}


使用Android studio 进行版本控制和冲突解决等


image.png

image.png

image.png

创建按钮装不下字的时候 需要新添加一行

visualDensity: VisualDensity(horizontal: -4, vertical: -4),

Container(
            width: 120.w,
            height: 56.h,
            child: FlatButton(
              visualDensity: VisualDensity(horizontal: -4, vertical: -4),
              color: Colors.yellow,
              disabledColor: Colors.black12,
              textColor: Colors.red,
              disabledTextColor: Colors.grey,
              onPressed: () {},
              child: Text(
                "同意",
                style: TextStyle(fontSize: 14),
              ),
              shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(28.h)),
            ),
          )

flutter 退出到指定页面

STLRouter.of().navigator.pushNamedAndRemoveUntil(
        RouterFXChatMine.ROUTER_INNER_MINE_PAGE, (route) => route == null);

使用Android studio 进行Git版本控制

用Android studio打开你的本地项目,


image.png

image.png

image.png

image.png

image.png

image.png

Git版本控制——保存修改到本地

image.png

flutter 清除应用库的缓存

image.png

flutter 清除缓存

flutter clean


image.png

汇聊拉完代码需要在终端输入下面命令 batchUpgrade.sh是自己写的
作用是快速 pub upgrade 各个模块

./batchUpgrade.sh

image.png

image.png

对应的文件内容


image.png
// batchUpgrade.sh
#!/bin/bash
for subDir in  `ls`
do 
    subPath="$(pwd)/$subDir"
    if [ -d "$subPath" ]  
    then
        #判断文件夹中是否包含 yaml文件
        needUpgrade=false
        for subFile in `ls $subPath`
        do
            if [ "${subFile##*.}"x = "yaml"x ]
            then
                needUpgrade=true
            fi 
        done

        
        if [ $needUpgrade = true ]
        then
           cd $subPath
           flutter pub upgrade
           cd ..
        fi
    fi
done

#根目录下执行
flutter pub upgrade

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容