Docker Desktop安装不了,只能安装Docker Toolbox。
通过国内镜像站下载:
喵个咪的博客Docker Desktop安装不了,只能安装Docker Toolbox。
通过国内镜像站下载:
scoop install flutter
我从 2018 年初就开始使用 Flutter,我仍然对自己为客户和公司开发和部署应用程序的速度感到惊讶。由于我的开发周期的重点是提供有价值的产品,因此我避免重新发明轮子,这就是为什么我有一个在大多数项目中使用的安全和流行的软件包列表。今天我将分享我最常用的 5+1 个 Flutter 包,以帮助您完成下一个项目。
随着移动应用程序对富媒体内容的需求不断增长,高效的图像加载和缓存变得至关重要。 cached_network_image 是一个可靠的解决方案,可以无缝处理图像加载、缓存和错误处理。通过在本地智能缓存图像,即使在具有挑战性的网络条件下,该软件包也能确保流畅且响应迅速的用户体验。凭借其简单性和性能,cached_network_image 几乎在我所有的应用程序中使用,以最佳效率提供具有迷人视觉的应用程序。
通过Google推出的Flutter framework,我们可以更为方便的开发跨平台APP,开发出来的APP能够在iOS、Android、Web、macOS、Windows和Linux上都可以执行。
在开发 Flutter App 之前,我们必须要先准备好开发环境,下面我将介绍如何在Mac环境下从零开始Flutter App的开发环境。
记得之前在写Kotlin的时候,对于Kotlin所提供的Sealed Class的功能感到惊喜,我还给Sealed Class封上了enum 2.0的称号,它拥有Class的特性,可以将状态封装起来,使用when语法的时候,还可以详尽列出所有的子项,而在Flutter当中,其实也有sealed class可以用,在Dart 3.0中,也已经将sealed class加入到了Dart的武器库。
假如,我们现在要实现一个 收音机 功能,我们可以使用enum声明其状态,代码如下:
| 提供商 | 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 |
首先,需要下载安装两个东西:DevEco Studio和command-line-tools,在这个网址去下载。
DevEco Studio是Jetbrains定制的IDE,使用起来和Android Studio也差不太多。
安装好之后,然后通过内置的SDK管理器去下载SDK,进入SDK管理器的路径是:File -> Settings -> OpenHarony SDK。找一个合适的版本下载。默认本地安装路径:C:\Users\{用户名}\AppData\Local\OpenHarmony\Sdk。
可以使用intl实现该功能。
首先安装库:
flutter pub add intl
是否使用 GetX?

看到有许多人在讨论 GetX 如何如何,通常很多人是刚进入 Flutter 的初学者,一眼望去,有许多状态管理可以选择,感觉无从下手,所以提出自己的询问,我觉得这些人做得很好,他们在决定投入之前,会先尝试一下询问社群。
在这里,我先给出个我的意见:
不建议你使用,尤其在专业以及大型的产品上更不应该使用,而且它也无法帮助你的职业发展。
逐行运行此命令
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
升级到Android Studio Ladybug | 2024.2.1后,我在 Flutter 项目中遇到了一些问题。幸运的是,我通过修改一些配置文件找到了一个简单的解决方案。如果您面临类似的挑战,请按照以下步骤让您的项目重回正轨。
修改settings.gradle:
id "com.android.application" version "8.3.2" apply false
Dart 3 在 Flutter 中引入了 密封类(Sealed Class)。如果您来自于类似 Kotlin 这样的现代编程语言,您可能已经知道它们有多么强大。如果没有,在本文结束时您将了解到关于密封类的全部内容。
密封类(Sealed Class)是一项强大的功能,使开发人员能够创建受限制的类层次结构。与常规类不同,密封类只能在同一文件中扩展,这使得它们成为表示有限相关类集的绝佳选择。
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;
});
}
}