喵个咪的博客喵个咪的博客
喵个咪的技术与生活
文章列表
文章分类
文章标签
时间线
喵个咪的技术与生活
文章列表
文章分类
文章标签
时间线
健康养生 1fastapi 1随笔日志 1产品设计 1ASIO 2cron 1rclone 1flutter 1RxDart 1Make 2CMake 2Ninja 1设计模式 2Cache Aside Pattern 1缓存设计模式 1汽车 1go 2CDC 1PostgreSQL 6Centos 1docker 1CLion 1云手机 1GoogleTest 1Cococs2dx 1Cocos Creator 1代码注释 1IDE 3Python 4TRC20 1C++ 8类型转换 1CQRS 1Kafka Streams 1Bazel 2Docker 21Go 6crontab 1客户留存率 1EFK 1RustDesk 1Jitsi Meet 1Traefik 1Swagger 1Docker Hub 1VIM 1Word 1VBA 1Doris 1量化交易 2Flutter 13Widget 1Ent 2SQL 2Excel 2配色 1TypeScript 3C# 1Sealed Class 2微信小程序 1人脸识别 2RK3588S 1Android Studio 1iOS 1GetX 1鸿蒙 1字体渲染 1期货 1Futures 1地理围栏 1GEO 1Git 2Golang 99Go-Kratos 86GoWind 41UBA 1算法 5WebRTC 2MongoDB 1Headless CMS 1WASM 1随机种子 1MacOS 3Ubuntu 2GCC 1Godot 1Clang 1Superset 1CentOS 1OpenCV 1咖啡 1Android 1Google Play 1Unity WebGL 1Dexie 1IndexedDB 1htop 1IM 1Postgresql 1Mattermost 1Qt 4TL;DR 1Swift 1Javascript 2JetBrains 1Typescript 1libuv 1Linux 1本地化 1国际化 1状态同步 1帧同步 1泡泡水 1Markdown 1机器学习 1QTT 1MQTT 2MSB 1LSB 1npm 1pnpm 1yarn 1OCR 1OHLC 1OLTP 1OLAP 1OpenAI 1OpenAPI 1数织 1Ping 1人体姿态识别 1全文搜索 1交叉表 1Prometheus 1Protobuf 2Docx 1QUIC 1Reactor 1Redis 1REST 1CoTURN 2RBAC 1Selenium 1基准测试 1Spine 1股票 1Roguelike 2ThingsBoard 3时间戳 1时序数据库 3交易所 1Unity 2用户画像 1PgBouncer 1Vite 1Vue 1WebGL 1加权随机 1BI 1数据血缘 1Roguelite 1Protocol 1WiFi 1WSL 3Windows 4
Windows Server 部署 Docker

Date: 1/1/2020Category: 运维技术Tag: Windows, Flutter

Docker Desktop安装不了,只能安装Docker Toolbox。

通过国内镜像站下载:

  • 阿里云:https://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
  • DaoCloud: https://get.daocloud.io/toolbox/
Windows安裝Flutter开发环境

Date: 1/1/2020Category: 编程技术Tag: Windows, Flutter

安装Flutter

scoop install flutter
2024年Flutter必知必会的5+1个降本增效软件包

Date: 1/1/2020Category: Flutter编程Tag: Flutter

我从 2018 年初就开始使用 Flutter,我仍然对自己为客户和公司开发和部署应用程序的速度感到惊讶。由于我的开发周期的重点是提供有价值的产品,因此我避免重新发明轮子,这就是为什么我有一个在大多数项目中使用的安全和流行的软件包列表。今天我将分享我最常用的 5+1 个 Flutter 包,以帮助您完成下一个项目。

1. cached_network_image

随着移动应用程序对富媒体内容的需求不断增长,高效的图像加载和缓存变得至关重要。 cached_network_image 是一个可靠的解决方案,可以无缝处理图像加载、缓存和错误处理。通过在本地智能缓存图像,即使在具有挑战性的网络条件下,该软件包也能确保流畅且响应迅速的用户体验。凭借其简单性和性能,cached_network_image 几乎在我所有的应用程序中使用,以最佳效率提供具有迷人视觉的应用程序。

如何在MacOS下安装Flutter开发环境

Date: 1/1/2020Category: Flutter编程Tag: Flutter, MacOS

通过Google推出的Flutter framework,我们可以更为方便的开发跨平台APP,开发出来的APP能够在iOS、Android、Web、macOS、Windows和Linux上都可以执行。

在开发 Flutter App 之前,我们必须要先准备好开发环境,下面我将介绍如何在Mac环境下从零开始Flutter App的开发环境。

  • 安装Xcode;
  • 安装Android Studio;
  • 安装VS Code;
  • 安装CocoaPods;

安装Xcode

Flutter使用Sealed Class让状态类更强大

Date: 1/1/2020Category: Flutter编程Tag: Flutter, Sealed Class

记得之前在写Kotlin的时候,对于Kotlin所提供的Sealed Class的功能感到惊喜,我还给Sealed Class封上了enum 2.0的称号,它拥有Class的特性,可以将状态封装起来,使用when语法的时候,还可以详尽列出所有的子项,而在Flutter当中,其实也有sealed class可以用,在Dart 3.0中,也已经将sealed class加入到了Dart的武器库。

enum

假如,我们现在要实现一个 收音机 功能,我们可以使用enum声明其状态,代码如下:

Flutter切换源

Date: 1/1/2020Category: Flutter编程Tag: Flutter

国内镜像列表

提供商 PUB_HOSTED_URL FLUTTER_STORAGE_BASE_URL
上海交大 https://mirror.sjtu.edu.cn/dart-pub https://mirror.sjtu.edu.cn
清华大学 https://mirrors.tuna.tsinghua.edu.cn/dart-pub https://mirrors.tuna.tsinghua.edu.cn/flutter
OpenTUNA https://opentuna.cn/dart-pub https://opentuna.cn/flutter
CNNIC http://mirrors.cnnic.cn/dart-pub http://mirrors.cnnic.cn/flutter
Flutter中国(七牛云) https://pub.flutter-io.cn https://storage.flutter-io.cn
腾讯云 https://mirrors.cloud.tencent.com/dart-pub https://mirrors.cloud.tencent.com/flutter
搭建Flutter的鸿蒙开发环境

Date: 1/1/2020Category: Flutter编程Tag: Flutter, 鸿蒙

安装鸿蒙开发环境

首先,需要下载安装两个东西:DevEco Studio和command-line-tools,在这个网址去下载。

DevEco Studio是Jetbrains定制的IDE,使用起来和Android Studio也差不太多。

安装好之后,然后通过内置的SDK管理器去下载SDK,进入SDK管理器的路径是:File -> Settings -> OpenHarony SDK。找一个合适的版本下载。默认本地安装路径:C:\Users\{用户名}\AppData\Local\OpenHarmony\Sdk。

Flutter学习实录

Date: 1/1/2020Category: Flutter编程Tag: Flutter

数字格式化

可以使用intl实现该功能。

首先安装库:

flutter pub add intl
刚进入Flutter吗?适合初学者食用,GetX是否适合你呢?

Date: 1/1/2020Category: Flutter编程Tag: Flutter, GetX

是否使用 GetX?

看到有许多人在讨论 GetX 如何如何,通常很多人是刚进入 Flutter 的初学者,一眼望去,有许多状态管理可以选择,感觉无从下手,所以提出自己的询问,我觉得这些人做得很好,他们在决定投入之前,会先尝试一下询问社群。

在这里,我先给出个我的意见:

不建议你使用,尤其在专业以及大型的产品上更不应该使用,而且它也无法帮助你的职业发展。

修复Flutter一些iOS编译错误

Date: 1/1/2020Category: Flutter编程Tag: Flutter, iOS

Сocoapods trunk URL couldn’t be downloaded

逐行运行此命令

gem uninstall cocoapods 
arch -x86_64 brew install cocoapods 
arch -x86_64 brew reinstall cocoapods 
cd ios 
pod cache clean --all 
pod install (如果m1 macOS 运行这个“arch -x86_64 pod install”)
pod update
解决 Flutter 项目更新至 Android Studio Ladybug (2024.2.1) 后出现的问题

Date: 1/1/2020Category: Flutter编程Tag: Flutter, Android Studio

升级到Android Studio Ladybug | 2024.2.1后,我在 Flutter 项目中遇到了一些问题。幸运的是,我通过修改一些配置文件找到了一个简单的解决方案。如果您面临类似的挑战,请按照以下步骤让您的项目重回正轨。

修改settings.gradle:

id "com.android.application" version "8.3.2" apply false
探索 Flutter 中的 Sealed Class

Date: 1/1/2020Category: Flutter编程Tag: Flutter, Sealed Class

Dart 3 在 Flutter 中引入了 密封类(Sealed Class)。如果您来自于类似 Kotlin 这样的现代编程语言,您可能已经知道它们有多么强大。如果没有,在本文结束时您将了解到关于密封类的全部内容。

密封类(Sealed Class)是一项强大的功能,使开发人员能够创建受限制的类层次结构。与常规类不同,密封类只能在同一文件中扩展,这使得它们成为表示有限相关类集的绝佳选择。

了解密封类

Flutter中父子Widget之间如何进行高效通信

Date: 1/1/2020Category: Flutter编程Tag: Flutter, Widget

Flutter 的 widget系统 允许 父widget 和 子widget 之间无缝通信。了解如何双向调用方法可以显著增强应用的架构和性能。在本文中,我们将探讨如何从 父widget 调用 子widget 的方法,反之亦然。

从父部件调用子部件的方法

在 Flutter 中,可以使用属于子State类型的全局键GlobalKey来从父级调用子Widget中定义的方法。

例如:假设我们有一个名为ChildWidget的子窗口小部件

class ChildWidget extends StatefulWidget {
  const ChildWidget({super.key});

  @override
  State<ChildWidget> createState() => ChildWidgetState();
}

class ChildWidgetState extends State<ChildWidget> {
  int value = 0;

  @override
  Widget build(BuildContext context) {
    return Card(
      elevation: 10,
      child: Container(
        height: 200,
        decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(10),
          color: Colors.green,
        ),
        child: Column(
          children: [
            const Text(
              "Child Widget",
              style: DemoTextStyle.headline1,
            ),
            ElevatedButton(onPressed: () {}, child: const Text("Call Parent")),
            Center(
              child: Text(
                'Child value:  $value',
                style: DemoTextStyle.copyWith(
                    fontSize: 18, fontWeight: FontWeight.normal),
              ),
            ),
          ],
        ),
      ),
    );
  }

  void changeValue() {
    setState(() {
      value++;
    });
  }

  void changeValueDynamic(int val) {
    setState(() {
      value = val;
    });
  }
}