Flutter中那些你需要知道的文本知识!

前言

文字是记录语言的书写符号系统,是形、音、义的统一体,是人类最重要的辅助性 交际工具。作为一个Flutter开发者,我们都知道可以通过Text()这个文本组件将文字显示出来。但是这其中的Flutter的字体是怎么组成的?Flutter文本是怎么构建的?Render Tree是怎样绘制文本的.....作为本专栏(整个专栏都在与文本打交道)的第一篇文章,让我们从这些原理细节讲起。希望能对你认识Flutter的文本渲染有所帮助。

注:本文的目的在于让大家了解Flutter中的基本文本知识,快速的带大家了解渲染流程,但并未很深入的分析Flutter文本渲染的原理。

继续阅读Flutter中那些你需要知道的文本知识!

2023 年第一弹, Flutter 3.7 发布啦,快来看看有什么新特性

核心内容原文链接: medium.com/flutter/wha…

2023 年新春之际, Flutter 喜提了 3.7 的大版本更新,在 Flutter 3.7 中主要有改进框架的性能,增加一些很棒的新功能,例如:创建自定义菜单栏、级联菜单、更好地支持国际化的工具、新的调试工具等等

另外 Flutter 3.7 还改进了 Global selection、使用 Impeller提升渲染能力、DevTools 等功能,以及一如既往的性能优化

PS :3.7 版本包含大量,大量,大量更新内容,感觉离 4.0 不远了。

继续阅读2023 年第一弹, Flutter 3.7 发布啦,快来看看有什么新特性

系统分析师的案例分析

前言

系统分析师培训班通过统计,得到一个结论:培训班的考生,死得最多的就是案例分析。

为什么呢?因为客观题只要平时多看,多刷就行了,论文则有固定套路。但是案例则是需要考生自己主动对外输出,并且难以有一个统一的套路。所以,那些培训班的考生,死得最多的就是案例分析。

而我对自己的案例分析是比较信心的。一方面是我参加的三次软考高级考试,每次案例分析分数都是客观,案例,论文三部分最高的。另一方面,我之前带过的一个同事,也是案例分析分数最高。

所以,我尽可能将案例分析的方法与技巧说出来(但是有的方法真的很难通过文字描述)。

文章将从案例准备,案例技巧,案例套路三个方面进行描述。

继续阅读系统分析师的案例分析

flutter desktop HIVE简单使用

1.数据库选型

flutter项目,需要使用本地存储,面临三个选择

  • shared_preferences
  • sqflite
  • hive
    第一个只能保存key vaule,用起来比较不爽。

    第二个对桌面版的不支持。

    最后选择了hive,用起来还算可以,不过,相对于后台的orm,还是有些东西需要自己处理。

2.项目引用

dependencies:
  hive: ^[version]
  hive_flutter: ^[version]

dev_dependencies:
  hive_generator: ^[version]
  build_runner: ^[version]

3.hive的简单使用

之前做个一阵子后台,按照后台的orm逻辑,组装了一下hive。

main.dart里面初始化hive

void main() async {
  await InitHive();
  runApp(const MyApp());
}

hive的初始化部分,初始化了三张表

import 'package:hive_flutter/adapters.dart';

import 'mclients.dart';

late Box MClients;

Future<void> initHive() async {
  await Hive.initFlutter('data');
  Hive.registerAdapter(MClientAdapter());

  MClients = await Hive.openBox<MClient>('mclients');
}

单个表的model

import 'package:flutter/cupertino.dart';
import 'package:hive_flutter/adapters.dart';

import 'hive.dart';

@HiveType(typeId: 1)
class MClient {
  @HiveField(0)
  String? clientId;
  @HiveField(1)
  String? host;
  @HiveField(2)
  String? port;
  @HiveField(3)
  String? user;
  @HiveField(4)
  String? password;
  MClient({this.clientId, this.host, this.port, this.user, this.password});
}

class MClientAdapter extends TypeAdapter<MClient> {
  @override
  final typeId = 0;

  @override
  MClient read(BinaryReader reader) {
    return MClient()
      ..clientId = reader.read()
      ..host = reader.read()
      ..password = reader.read()
      ..user = reader.read()
      ..password = reader.read();
  }

  @override
  void write(BinaryWriter writer, MClient obj) {
    writer.write(obj.clientId);
    writer.write(obj.host);
    writer.write(obj.port);
    writer.write(obj.user);
    writer.write(obj.password);
  }
}

void clientCreate(clientId, host, port, user, password) {
  var cc = MClient(
      clientId: clientId,
      host: host,
      port: port,
      user: user,
      password: password);
  MClients.put(clientId, cc);
}

MClient? clientGet(clientId) {
  if (MClients.get(clientId) != null) {
    var cc1 = MClients.get(clientId);
    return cc1;
  } else {
    return null;
  }
}

List<MClient> clientGetList() {
  var res = MClients.values.toList();
  List<MClient> cc = res.cast<MClient>();
  debugPrint("查到list:  $cc");
  return cc;
}

void clientDel(clientId) {
  MClients.delete(clientId);
}

使用model

late List<String> clientids;
getClientids() {
    clients = ClientGetList();
    clientidsd =
        List.generate(clients.length, (index) => clients[index].clientid);
    clientids = clientidsd.cast<String>();
  }

结束。

参考链接


macOS Big Sur (11.7.2) 通过Docker Desktop安装MySQL

安装 Docker Desktop

首先去 Docker 官网下载 macOS 版本的 Docker Desktop 版本(目前(2023/01/06)的最新版本是 4.15.0 (93002)),并安装。

安装 MySQL

通过 Docker Desktop 安装MySQL ,整个过程参考如下:

继续阅读macOS Big Sur (11.7.2) 通过Docker Desktop安装MySQL

macOS Big Sur (11.7.2)部署Sonic开源移动端云真机测试平台

安装 Docker Desktop

首先去 Docker 官网下载 macOS 版本的 Docker Desktop 版本(目前(2023/01/06)的最新版本是 4.15.0 (93002)),并安装。

安装配置 MySQL

$ brew install mysql

# 设置管理员密码
$ mysqladmin -u root password

# 手工创建数据库
$ mysql -u root -p -e "create database sonic default character set utf8 collate utf8_general_ci;"

# 配置域名重定向
$ echo '127.0.0.1 host.docker.internal' | sudo tee -a /etc/hosts

继续阅读macOS Big Sur (11.7.2)部署Sonic开源移动端云真机测试平台

Whistle 是基于 Node 实现的跨平台抓包调试工具

Whistle 是基于 Node 实现的跨平台抓包调试工具,其主要特点:

  1. 完全跨平台:支持 Mac、Windows 等桌面系统,且支持服务端等命令行系统
  2. 功能强大(理论上可以对请求做任意修改)
    • 支持作为 HTTP、HTTPS、SOCKS 代理及反向代理
    • 支持抓包及修改 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求
    • 支持重放及构造 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求
    • 支持设置上游代理、PAC 脚本、Hosts、延迟(限速)请求响应等
    • 支持查看远程页面的 console 日志及 DOM 节点
    • 支持用 Node 开发插件扩展功能,也可以作为独立 npm 包引用
  3. 操作简单
    • 直接通过浏览器查看抓包、修改请求
    • 所有修改操作都可以通过配置方式实现(类似系统 Hosts),并支持分组管理
    • 项目可以自带代理规则配置并一键设置到本地 Whistle 代理,也可以通过定制插件简化操作

继续阅读Whistle 是基于 Node 实现的跨平台抓包调试工具