赞
踩
Flutter开发可以在macOS,Linux或Windows上完成。虽然您可以在Flutter工具链中使用任何编辑器,但IntelliJ IDEA,Android Studio和Visual Studio Code的IDE插件可以简化开发工作。
下载flutter SDK。地址(链接见文末)
将flutter的bin目录添加到path中。
执行flutter doctor命令,他会安装flutter框架,包括dart,而且提示你任何其他需要安装的依赖。
安装其他依赖。
在IDE中安装flutter插件。
体验
选择 File>New Flutter Project
选择 Flutter application 作为 project 类型, 然后点击 Next
输入项目名称 (如 myapp), 然后点击 Next
点击 Finish
等待Android Studio安装SDK并创建项目. 在项目目录中,您应用程序的代码位于 lib/main.dart.
在 target selector 中, 选择一个运行该应用的Android设备. 如果没有列出可用,请选择 Tools>Android>AVD Manager 并在那里创建一个
在工具栏中点击 Run图标, 或者调用菜单项 Run > Run.
启动 VS Code.
调用 View>Command Palette…
输入 ‘flutter’, 然后选择 ‘Flutter: New Project’ action
输入 Project 名称 (如myapp), 然后按回车键
指定放置项目的位置,然后按蓝色的确定按钮
等待项目创建继续,并显示main.dart文件 在项目目录中,您应用程序的代码位于 lib/main.dart.
确保在VS Code的右下角选择了目标设备
按 F5 键或调用Debug>Start Debugging
等待应用程序启动
$ flutter create myapp$ cd myapp
$ flutter devices
运行 flutter run 命令来运行应用程序:
$ flutter run
如果一切正常, 您应该在您的设备或模拟器上会看到启动的应用程序:
## 项目结构
┬└ projectname ┬ ├ android - Android部分的工程文件 ├ build - 项目的构建输出目录 ├ ios - iOS部分的工程文件 ├ lib - 项目中的Dart源文件 ┬ └ src - 包含其他源文件 └ main.dart - 自动生成的项目入口文件,类似RN的index.js文件 ├ test - 测试相关文件 └ pubspec.yaml - 项目依赖配置文件类似于RN的 package.json
如何添加Flutter项目所需的依赖?
在Android中,你可以在Gradle文件来添加依赖项;
在 iOS 中,通常把依赖添加到 Podfile 中;
在RN中,通常是由package.json来管理项目依赖;
Flutter 使用 Dart 构建系统和 Pub 包管理器来处理依赖。这些工具将Android 和 iOS native 包装应用程序的构建委派给相应的构建系统。
dependencies: flutter: sdk: flutter google_sign_in: ^3.0.3
在Flutter中,虽然在Flutter项目中的Android文件夹下有Gradle文件,但只有在添加平台相关所需的依赖关系时才使用这些文件。否则,应该使用pubspec.yaml来声明用于Flutter的外部依赖项。
iOS也是一样,如果你的 Flutter 工程中的 iOS 文件夹中有 Podfile,请仅在添加iOS平台相关的依赖时使用它。否则,应该使用pubspec.yaml来声明用于Flutter的外部依赖项。
如何归档图片资源以及如何处理不同分辨率
虽然Android将resources 和 assets 区别对待,但在Flutter中它们都会被作为assets处理, 所有存在于Android上res/drawable- *文件夹中的资源都放在Flutter的assets文件夹中。
与Android类似,iOS 同样将 images 和 assets 作为不同的东西,而 Flutter 中只有 assets。被放到 iOS 中 Images.xcasset 文件夹下的资源在 Flutter 中被放到了 assets 文件夹中。
在Flutter中assets可以是任意类型的文件,而不仅仅是图片。例如,你可以把 json 文件放置到 my-assets 文件夹中。
my-assets/data.json
记得在 pubspec.yaml 文件中声明 assets:
assets: - my-assets/data.json
然后在代码中我们可以通过 AssetBundle 来访问它:
import ‘dart:async’ show Future;import ‘package:flutter/services.dart’ show rootBundle;
Future loadAsset() async { return await rootBundle.loadString(‘my-assets/data.json’);}
对于图片,Flutter 像 iOS 一样,遵循了一个简单的基于像素密度的格式。Image assets 可能是 1.0x 2.0x 3.0x 或是其他的任何倍数。这个 devicePixelRatio 表示了物理像素到单个逻辑像素的比率。
Android不同像素密度的图片和Flutter的像素比率的对应关系
ldpi 0.75xmdpi 1.0xhdpi 1.5xxhdpi 2.0xxxhdpi 3.0xxxxhdpi 4.0x
举个例子,要把一个名为 my_icon.png 的图片放到 Flutter 工程中,你可能想要把它放到images文件夹中。把图片(1.0x)放置到 images 文件夹中,并把其它分辨率的图片放在对应的子文件夹中,并接上合适的比例系数,就像这样:
images/my_icon.png // Base: 1.0x imageimages/2.0x/my_icon.png // 2.0x imageimages/3.0x/my_icon.png // 3.0x image
接下来就可以在pubspec.yaml文件中这样声明这个图片资源:
assets: - images/my_icon.png
现在,我们就可以借助AssetImage来访问它了。
return AssetImage(“images/a_dot_burr.jpeg”);
也可通过 Image widget 直接使用:
@overrideWidget build(BuildContext context) { return Image.asset(“images/my_image.png”);}
如何归档strings资源,以及如何处理不同语言?
不像 iOS 拥有一个 Localizable.strings 文件,Flutter目前没有专门的字符串资源系统。目前,最佳做法是将strings资源作为静态字段保存在类中。例如:
class Strings { static String welcomeMessage = “Welcome To Flutter”;}
然后像如下方式来访问它:
Text(Strings.welcomeMessage)
默认情况下,Flutter 只支持美式英语字符串。如果你要支持其他语言,请引入 flutter_localizations 包。你可能也要引入 intl 包来支持其他的 i10n 机制,比如日期/时间格式化。
dependencies: # … flutter_localizations: sdk: flutter intl: “^0.15.6”
要使用 flutter_localizations 包,还需要在 app widget 中指定 localizationsDelegates 和 supportedLocales。
import ‘package:flutter_localizations/flutter_localizations.dart’;
MaterialApp( localizationsDelegates: [ // Add app-specific localization delegate[s] here GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], supportedLocales: [ const Locale(‘en’, ‘US’), // English const Locale(‘he’, ‘IL’), // Hebrew // … other locales the app supports ], // …)
这些代理包括了实际的本地化值,并且 supportedLocales 定义了 App 支持哪些地区。上面的例子使用了一个 MaterialApp ,所以它既有 GlobalWidgetsLocalizations 用于基础 widgets,也有 MaterialWidgetsLocalizations 用于 Material wigets 的本地化。如果你使用 WidgetsApp ,则无需包括后者。注意,这两个代理虽然包括了“默认”值,但如果你想让你的 App 本地化,你仍需要提供一或多个代理作为你的 App 本地化副本。
当初始化时,WidgetsApp 或 MaterialApp 会使用你指定的代理为你创建一个 Localizations widget。Localizations widget 可以随时从当前上下文中访问设备的地点,或者使用 Window.locale。
要访问本地化文件,使用 Localizations.of() 方法来访问提供代理的特定本地化类。如需翻译,使用 intl_translation 包来取出翻译副本到 arb 文件中。把它们引入 App 中,并用 intl 来使用它们。
更多 Flutter 中国际化和本地化的细节,请访问 internationalization guide ,里面有不使用 intl 包的示例代码。
组件
在 Flutter 中一切皆是 组件,仅仅 Widget 的子类和间接子类就有350多个,如此多的组件到底如果学习,真的需要学习 350 多个组件?经济学中有一个著名的 二八定律 ,而我们学习 Flutter 也适用于二八定律,大部分组件是平时很少用到的,因此作为初学者,只需学习那 20% 常用的组件即可。
RenderObjectWidget及其子类共有89个:
ProxyWidget及其子类共有34个:
StatelessWidget及其子类共有89个:
StatefulWidget的子类最多,高达141个
▐ 组件树
Flutter 创建App的时候,所有的组件最后会生成一个组件树,例如如下代码:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
我总结了一些Android核心知识点,以及一些最新的大厂面试题、知识脑图和视频资料解析。
以后的路也希望我们能一起走下去。(谢谢大家一直以来的支持)
部分资料一览:
Android学习的系统对应视频
Android进阶的系统对应学习资料
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
!(备注:Android)**
我总结了一些Android核心知识点,以及一些最新的大厂面试题、知识脑图和视频资料解析。
以后的路也希望我们能一起走下去。(谢谢大家一直以来的支持)
部分资料一览:
[外链图片转存中…(img-9kKevksu-1713311649107)]
[外链图片转存中…(img-rTXroWZi-1713311649108)]
Android学习的系统对应视频
Android进阶的系统对应学习资料
[外链图片转存中…(img-f7PYYrYF-1713311649110)]
[外链图片转存中…(img-o2FqbMs2-1713311649111)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。