Flutter开发中遇到的问题总结

Flutter开发中遇到的问题总结

  1. 不要在flutter中使用/开头的路由,按照官网对于initialRoute的介绍https://api.flutter.dev/flutter/material/MaterialApp/initialRoute.html,如果路由名由/开头那么将会被分割成多份并以此进入,所以应用启动前必然会先进入/对应的路由,而这可能产生一些不可控的问题。
  2. 在使用SharedPreferences.getInstance()方法前一定要先执行WidgetsFlutterBinding.ensureInitialized(),否则会报Null check operator used on a null value的错误。
  3. App 分享到微信 QQ 等,过程比较繁琐,需要先准备一个应用官网,不能太简单,需要有应用介绍、产品说明、隐私协议、用户协议、联系方式、备案信息等。

然后在 QQ 互联和微信开放平台分别注册一个移动应用。

接着按照苹果官网完成Universal Links的准备和配置工作完成配置,接着在 QQ 互联和微信开放平台里填写Universal Link地址,QQ 互联可以直接验证。

然后引用wechat_kit tencent_kit库,按照文档中的配置去操作,其中 微信在 iOS 端还需要重写一个方法方法,否则无法正常分享,在AppDelegate.swift文件里,重写后如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import UIKit
import Flutter

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate,WXApiDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}

override func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
return WXApi.handleOpenUniversalLink(userActivity ,delegate:self)
}
}
我的首个硬件开发

我的首个硬件开发

故事背景

人到30,岁月的痕迹就会在身上体现出来。老婆大人一直很在意她的颈纹,说很难看(我倒是没有很在意啦😅),然后刷小红书看到颈纹治疗仪,看了下价格动辄上千,有的有2 3千,而且效果怎么样也不是很清楚。然后跟我说了这个事,也让我看下原理啥的。

经过一番调查,发现红光(波长720纳米左右)对于胶原蛋白确实有一定的促进左右,现在也有医院有专门的红光治疗,但是要排队,收费也不便宜。顺便说下搜索到的信息里也提到蓝光对于治疗痔疮有一定效果。而胶原蛋白在一些文章里也提到确实对于治疗颈纹有一定的效果。但是如果想完全靠这种方式治疗颈纹也是不可能的,更多的应该靠日常的行为(少低头玩手机📵)来规避,不过作为一种辅助治疗方法每天坚持下去应该还是有少许效果的(起码对于心理上有很大的提升作用,心美了人才美😄)。

阅读更多
解决Optinal chaining会报no-unused-exceptions的错误

解决Optinal chaining会报no-unused-exceptions的错误

问题起源

在使用vue-cli生成的项目中可以直接使用可选链(Optional chaining)的写法,如this.foo?.bar?.[0]?.()。但是有时候会报一个no-unused-exceptions的错误,eslint认为你这写法仅仅是一个表达式而不是函数调用。一开始就1/2处的时候就直接eslint-disable-next-line忽略掉,但是多了后就在想不能老这么办啊,于是就上网搜索解决方法。

解决方法

最终在这里看到解决方法,禁用eslintno-unused-expressions规则,改为使用babelbabel/no-unused-expressions规则。应该是eslint默认的规则还没有跟上时代,那babel就说我来替你处理吧。也许以后eslint升级了就可以不需要这么写了。

我是如何给Comunion开发环境做CI/CD的

我是如何给Comunion开发环境做CI/CD的

项目介绍

Comunion是一个分布式的协作网络,通过区块链的技术去重新组织生产力和劳动的交易模式,从而实现全球劳动力、资源的自由、高效的流通和交易的一个平台💕。详情可以查看官网

目前我在项目中主要负责前端开发和自动化打包发布等工作👷。

阅读更多
服务器数据备份方案

服务器数据备份方案

由于服务器买的是一年,而一年后可能有各种不确定性因素,再加上可能的一些误操作,所以之前建立的DevOps环境以及Bitwarden需要做一个备份。正好家里有黑群晖,就用它做数据备份吧

最新备份方案

由于之前一直是用家里的 nas 进行备份,导致不怎么用的 nas 一直开机且无法进入自动休眠模式,心疼,所以打算切换到线上备份方案。原本打算用 api 对接各种云服务,自己 coding,但忽然想起不是有最厉害的开源多端云同步工具rclone么!那就用它做来备份吧。

安装

按照官网教程,在服务器上安装rclone

1
curl https://rclone.org/install.sh | sudo bash
阅读更多
基于openwrt的家庭网络设置

基于openwrt的家庭网络设置

家里网络终于通了,开始要捣鼓起来了。

  1. 让宽带师傅改桥接(究竟有没有效果不知道)
  2. openwrt软路由设置pppoe拨号,发现是100开头的内网地址,后面准备申请让电信给公网ip
  3. 前往 下载最新版本,上传到软路由,解压并移动到/usr/sbin目录,执行AdGuardHome -s install完成服务安装并启动
阅读更多
搭建一套k3s的集群环境

搭建一套k3s的集群环境

服务器组织

准备4个服务器,hostname如下

  1. rancher-server
  2. k3s-server
  3. k3s-agent1
  4. k3s-agent2

其中rancher-serverk3s-server2个节点配置稍微高点,agent节点配置可以低点,1G内存也是够了。

阅读更多
微信小程序开发填坑整理

微信小程序开发填坑整理

  • open-data显示头像,希望加圆角,直接使用border-radius不生效,需要再加overflow:hidden,猜测为open-data下还有子节点,而图片在子节点上,必须在父节点上加overflow:hidden来隐藏超出部分
  • picker上设置flex一类的样式无法直接应用到子节点上,需要在picker内部再套一层带样式的view,原因同上。例如
    1
    2
    3
    4
    5
    6
    <picker>
    <view class="flex ai-center">
    <view class="child1"></view>
    <view class="child2"></view>
    </view>
    </picker>
阅读更多
利用Traefik搭建超简单的DevOps平台

利用Traefik搭建超简单的DevOps平台

又是好久没有写博客了,忽然有点自己不知道继续往哪个方向发展,一会搞搞Flutter,一会又玩玩Docker,有时又想做些框架沉淀,很多东西都没深入做下去。正好之前搞的DevOps平台最近需要做些扩展,就花点时间把这次经验记录下来方便以后查看😂。

首先,做什么?为什么做?

还是DevOps,还是为了简化开发,还是低端机器,所以选择的方案依然是Gogs+drone。但是这次的方案有别于之前的Dokku,而是使用traefik作为网关服务器并且提供自动设置HTTPS的功能。先看下什么是traefik

阅读更多
CentOS7升级OpenSSH

CentOS7升级OpenSSH

当前状态

查看openssh版本 ssh -V,查看openssl版本openssl version,记录当前版本号以便升级后做对比。

开启Telnet

升级ssh的过程中可能导致ssh无法登录,所以最好先开着Telnet。

1
2
3
4
5
6
7
8
9
10
11
12
yum install xinetd telnet-server -y
systemctl enable xinetd.service
systemctl enable telnet.socket
systemctl start telnet.socket
systemctl start xinetd
# 允许root登录
echo 'pts/0' >>/etc/securetty
echo 'pts/1' >>/etc/securetty
systemctl restart xinetd.service
# 防火墙添加过滤
firewall-cmd --add-service=telnet --zone=public --permanent
# 确认下telnet是否可以登录成功
阅读更多
Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×