Android Developer 入门FLutter 整理(1)

本文详细介绍了Flutter中的关键组件用法,如build方法拆分、显示加载对话框、ListView与ProgressIndicator的交互,以及如何处理字符串、图片资源、生命周期管理、自定义字体和手势监听等。同时涵盖了Flutter中的国际化、依赖管理、屏幕旋转和自定义原生插件等内容。
摘要由CSDN通过智能技术生成

build 方法被拆分成三个不同的方法。如果 showLoadingDialog() 返回 true(当 widgets.length == 0),渲染 ProgressIndicator。否则,在 ListView 里渲染网络请求返回的数据。

在哪里放置分辨率相关的图片文件?

Flutter 遵循一个简单的类似 iOS 的密度相关的格式。文件可以是一倍 (1.0x)、两倍 (2.0x)、三倍 (3.0x) 或其它的任意倍数。

Flutter 没有 dp 单位,但是有逻辑像素尺寸,基本和设备无关的像素尺寸是一样的。

字符串储存在哪里?如何处理本地化?

Flutter 当下并没有一个特定的管理字符串的资源管理系统。

将字符串作为静态域存放在类中,并通过类访问它们。

Flutter 开发者使用 intl 包 进行国际化和本地化。

Gradle 文件的对应物是什么?我该如何添加依赖?

在 pubspec.yaml 文件中定义在 Flutter 里使用的外部依赖。 pub.dev 是查找 Flutter packages 的好地方

如何监听 Android Activity 的生命周期事件?

绑定 WidgetsBinding 观察者并监听 didChangeAppLifecycleState() 的变化事件来监听生命周期。

可以被观察的生命周期事件有:

  • inactive — 应用处于非活跃状态并且不接收用户输入。这个事件只适用于 iOS,Android 上没有对应的事件;

  • paused — 应用当前对用户不可见,无法响应用户输入,并运行在后台。这个事件对应于 Android 中的 onPause()

  • resumed — 应用对用户可见并且可以响应用户的输入。这个事件对应于 Android 中的 onPostResume()

  • suspending — 应用暂时被挂起。这个事件对应于 Android 中的 onStop; iOS 上由于没有对应的事件,因此不会触发此事件。

LinearLayout 的对应概念是什么?

Row 或者 Column Widget 来实现相同的效果。

RelativeLayout 的对应概念是什么?

组合使用 Column、Row 和 Stack Widget 实现 RelativeLayout 的效果。

ScrollView 的对应概念是什么?

实现这个功能的最简单的方法是使用 ListView widget。

在 Flutter 中如何处理屏幕旋转?

FlutterView 会处理配置的变化,前提条件是在 AndroidManifest.xml 文件中声明了:

android:configChanges=“orientation|screenSize”

Flutter 中如何为一个 Widget 添加点击监听器?

如果 Widget 支持事件监听,那么向它传入一个方法并在方法中处理事件。例如,RaisedButton 有一个 onPressed 参数

如果 Widget 不支持事件监听,将 Widget 包装进一个 GestureDetector 中并向 onTap 参数传入一个方法。

如何处理 Widget 上的其它手势?

使用 GestureDetector 可以监听非常多的手势,例如:

  • Tap

  • onTapDown - 一个可能产生点击事件的指针触摸到屏幕的特定位置。

  • onTapUp - 一个产生了点击事件的指针停止触摸屏幕的特定位置。

  • onTap - 一个点击事件已经发生。

  • onTapCancel - 之前触发了 onTapDown 事件的指针不会产生点击事件。

  • Double tap

  • onDoubleTap - 用户在屏幕同一位置连续快速地点击两次。

  • Long press

  • onLongPress - 指针在屏幕的同一位置保持了一段较长时间的触摸状态。

  • Vertical drag

  • onVerticalDragStart - 指针已经触摸屏幕并可能开始垂直移动。

  • onVerticalDragUpdate - 触摸屏幕的指针在垂直方向移动了更多的距离。

  • onVerticalDragEnd - 之前和屏幕接触并垂直移动的指针不再继续和屏幕接触,并且在和屏幕停止接触的时候以一定的速度移动。

  • Horizontal drag

  • onHorizontalDragStart - 指针已经触摸屏幕并可能开始水平移动。

  • onHorizontalDragUpdate - 触摸屏幕的指针在水平方向移动了更多的距离。

  • onHorizontalDragEnd - 之前和屏幕接触并水平移动的指针不再继续和屏幕接触,并且在和屏幕停止接触的时候以一定的速度移动。

ListView 在 Flutter 中的对应概念是什么?

因为 Flutter widget 不可变的特点,你需要向 ListView 传入一组 widget, Flutter 会保证滑动的快速顺畅。

如何知道点击了哪个列表项?

使用传入 widget 的触摸监听。

如何动态更新 ListView?

在 Flutter 中,如果你准备在 setState() 里更新一组 widget,你很快会发现你的数据并没有更新到界面上。这是因为当 setState() 被调用的时候, Flutter 渲染引擎会查看 Widget 树是否有任何更改。当引擎检查到 ListView,他会执行 == 检查,并判断两个 ListView 是一样的。没有任何更改,所以也就不需要更新。

推荐的高效且有效的创建一个列表的方法是使用 ListView.Builder。这个方法非常适用于动态列表或者拥有大量数据的列表。

如何为 Text Widget 设置自定义字体?

将字体文件放入一个文件夹,并在 pubspec.yaml 文件中引用它,就和导入图片一样。

如何更改 Text Widget 的样式?

Text Widget 的样式参数接收一个 TextStyle 对象,你可以在这个对象里自定义很多参数,例如:

  • color

  • decoration

  • decorationColor

  • decorationStyle

  • fontFamily

  • fontSize

  • fontStyle

  • fontWeight

  • hashCode

  • height

  • inherit

  • letterSpacing

  • textBaseline

  • wordSpacing

如何使用 GPS 传感器?

如何使用相机?

如何使用 Facebook 登录?

如何使用 Firebase 的功能?

官方插件 提供了 Firebase 的大多数功能。这些插件都是由 Flutter 团队维护的官方集成插件:

你可以在 Pub 网站上查找一些官方插件没有直接支持的功能的第三方 Firebase 插件。

如何创建自己的自定义原生集成插件?

开发包和插件

如何在 Flutter 应用中使用 NDK?

推荐学习资料

  • Android进阶学习全套手册

  • Android对标阿里P7学习视频

  • BAT TMD大厂Android高频面试题

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

P7学习视频

[外链图片转存中…(img-iddoyLtk-1714274199348)]

  • BAT TMD大厂Android高频面试题

[外链图片转存中…(img-rp4JjsiR-1714274199349)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值