喵个咪的博客喵个咪的博客
喵个咪的技术与生活
文章列表
文章分类
文章标签
时间线
喵个咪的技术与生活
文章列表
文章分类
文章标签
时间线
健康养生 2Python编程 5随笔日志 1产品设计 1C++编程 10运维技术 34Flutter编程 12编程技术 67设计模式 1汽车 1Go编程 64架构设计 3游戏开发 13量化开发 6物联网开发 7GoWind风行 41生活杂记 1
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;
    });
  }
}
Flutter 使用 RxDart & Streams 实现 BLoC模式

Date: 1/1/2020Category: Flutter编程Tag: flutter, RxDart

我将从本系列的第一部分开始构建一个简单的简短应用程序实现,该实现可以从 API 获取最新的技术新闻。在开始之前,我将简要介绍一些关键术语及其含义。

什么是反应式编程?

响应式编程基本上是 使用异步可观察流进行编程。在 Dart 中,流提供异步数据序列。

RxDart 是基于 Dart 的反应式编程实现。如果您来自 Android 开发领域,RxJava + RxAndroid、Coroutines 可能非常适合您。Dart 编程语言中已经实现了类似的概念。RxDart 是 Dart 语言的 ReactiveX 支持的反应式函数式编程库。Dart 已经有一个很好的用于处理 Streams 的包,但 RxDart 用新功能对其进行了扩展。