【译】Flutter 1,Android最新大厂面试真题总结

本文主要介绍了Dart的空安全特性,包括可靠的null safety、设计原则、声明变量的null safety以及如何简化null安全的使用。Dart的null safety可以消除因null引起的错误,提高代码的可靠性和性能。文章通过示例代码解释了如何声明non-nullable变量,并展示了Dart如何在编译时自动检测和避免null值,从而简化了空安全的使用。
摘要由CSDN通过智能技术生成

Dart 是一种类型安全的语言,这意味着当开发者获取某种类型的变量时,编译器可以保证它是该类型,但是类型安全本身不能保证变量不是 null

Null errors 非常常见的问题,在 GitHub上 可以搜索到成千上万由于 null 导致 Dart 代码出现异常的问题,甚至有成千上万的 commits 试图解决这些问题。

例如你尝试查看是否可以在以下示例代码中发现 nullability 问题:

void printLengths(List files) {
for (var file in files) {
print(file.lengthSync());
}
}

如果通过 null 调用此函数肯定会失败,但是还要考虑第二种情况:

void main() {
// Error case 1: passing a null to files.
printLengths(null);
// Error case 2: passing list of files, containing a null item.
printLengths([File(‘filename1’), File(‘filename2’), null]);
}

而空安全功能可以使该问题消失了:

使用 null 安全,开发者就可以放心地对代码进行推导,不再有讨厌的运行时 null 引用错误。相反开发者可以在编写代码时就发现静态错误。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter Android v2 embedding 是 FlutterAndroid 平台上的第二种嵌入方式,它是在 Flutter 1.12 版本中引入的。相比于 v1 embedding,v2 embedding 提供了更好的性能和更灵活的集成方式。 升级到 v2 embedding 需要进行以下步骤: 1. 更新 Flutter SDK 到 1.12 版本或更高版本。 2. 在 Android 项目中添加以下依赖项: ``` dependencies { implementation 'com.google.android.material:material:1.2.1' implementation 'io.flutter:flutter_embedding_v2:1.0.0-rc.2' } ``` 3. 更改 Android 应用程序的启动方式,使用 `FlutterActivity` 代替 `FlutterActivityV1`,例如: ``` public class MainActivity extends FlutterActivity { // ... } ``` 4. 在 `AndroidManifest.xml` 文件中,将 `FlutterActivity` 的主题更改为 `Theme.AppCompat.Light.NoActionBar`,例如: ``` <activity android:name=".MainActivity" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/NormalTheme" /> </activity> ``` 5. 在 `MainActivity` 中,创建一个 `FlutterEngine` 对象,并将其传递给 `FlutterFragment` 或 `FlutterView`,例如: ``` public class MainActivity extends FlutterActivity { private FlutterEngine flutterEngine; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); flutterEngine = new FlutterEngine(this); FlutterFragment flutterFragment = FlutterFragment.withCachedEngine(flutterEngine).build(); getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, flutterFragment).commit(); } } ``` 这些步骤可以让你从 v1 embedding 升级到 v2 embedding,以获得更好的性能和更灵活的集成方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值