android studio更新通知中,红字如上
发现与新版本不兼容的插件:Firebase 服务
我收到上述警告,我不明白其含义。这是否意味着更新 android studio 后 Firebase 相关包将无法运行?
我不应该更新android studio吗?但是,我认为似乎没有永远不更新 android studio 的选项
我目前正在使用 Flutter 和 Firebase 构建应用程序,但是根据项目的不同,Firebase 相关包的版本可能会有所不同,我该怎么办?
https://flutter.dev/docs/cookbook/networking/fetch-data
在上一页的最后一个“完整示例”中,
class Album {
final int userId;
final int id;
final String title;
Album({this.userId, this.id, this.title});
factory Album.fromJson(Map<String, dynamic> json) {
return Album(
userId: json['userId'],
id: json['id'],
title: json['title'],
);
}
}
Run Code Online (Sandbox Code Playgroud)
它是一个Album类,用于接收请求中收到的JSON字符串并在应用程序中处理它,构造函数除了普通构造函数之外还提供了工厂构造函数。
关于工厂构造函数, https://dart.dev/guides/language/language-tour#constructors
我已阅读上一页的工厂构造函数部分。
示例中Logger类的工厂构造函数并不总是创建新实例,因此我可以理解添加factory关键字,
即使在这个 Complete 示例的 Album 类中,是否也有必要使用工厂构造函数?
对于Album类,由于在工厂构造函数中使用了普通构造函数,因此我觉得这个工厂构造函数(Album.fromJson)总是创建一个新实例。实际上
Future<Album> fetchAlbum() async {
final response =
await http.get('https://jsonplaceholder.typicode.com/albums/16');
if (response.statusCode == 200) {
// If the server did return a 200 OK response,
// then parse the JSON.
var temp=json.decode(response.body);
return Album(userId:temp['userId'],id:temp['id'],title:temp['title']);
} else { …Run Code Online (Sandbox Code Playgroud) https://flutter.dev/docs/testing/build-modes
上面的页面有以下解释。
在调试模式下,启用服务扩展。
在发布模式下,服务扩展被禁用。Flutter 中的“服务扩展”是什么?
https://dart.dev/guides/language/language-tour#implicit-interfaces
我见过使用“实现”的代码,所以我正在研究“实现”。但我无法通过查看官方文档来真正区分与扩展的区别。
查看官方文档(上页)中的示例代码,看起来它只是在执行使用 extends with Implements 可以执行的操作。然后我想知道是否应该使用“extends”。我想到目前为止我已经了解了继承(扩展)和混合(与)。Dart 文档中也提到了“接口”这个词,但是对于“接口”有明确的定义。我什至找不到它在哪里。我对其他语言的界面了解不多,所以很难得到图像。
继承和实现之间到底有什么区别?由于差异,什么时候使用继承“extends”,什么时候使用实现“implements”?
样本中是否存在明显差异的地方?
我已经为 ElevatedButton 定义了一个自定义小部件,我想让 shape 字段成为可选的,如下所示,并在没有传递值时使用初始值,但是当我按照上面的方式编写时,会出现以下错误。..
\nclass GradientElevatedButton extends StatelessWidget {\n GradientElevatedButton({\n Key? key,\n required this.onPressed,\n required this.child,\n required this.colors,\n this.shape = RoundedRectangleBorder(\n borderRadius: BorderRadius.circular(30),//\xe2\x86\x90here\n ),\n }) : super(key: key);\n\n final Widget child;\n final void Function() onPressed;\n final List<Color> colors;\n final OutlinedBorder shape;\nRun Code Online (Sandbox Code Playgroud)\n//error\nThe default value of an optional parameter must be constant.\nRun Code Online (Sandbox Code Playgroud)\n也许这意味着 BorderRadius.circular 构造函数不是 const,
\n如果想使用下面的OutlinedBorder作为默认值应该怎么写?\nRoundedRectangleBorder(\nborderRadius: BorderRadius.circular(30),\n)
\nhttps://firebase.google.com/codelabs/firebase-get-to-know-flutter#3
\ndart pub global activate flutterfire_cli\nRun Code Online (Sandbox Code Playgroud)\n我按照上页的说明执行了上述命令。\n执行此操作时,我收到以下错误消息。
\nThe current Dart SDK version is 2.10.5.\n\nBecause pub global activate depends on flutterfire_cli any which requires SDK version >=2.12.0 <3.0.0, version solving failed.\nRun Code Online (Sandbox Code Playgroud)\n当我运行 flutter Upgrade 进行尝试时,我收到以下消息。
\nFlutter is already up to date on channel stable\nFlutter 2.8.1 \xe2\x80\xa2 channel stable \xe2\x80\xa2 https://github.com/flutter/flutter.git\nFramework \xe2\x80\xa2 revision 77d935af4d (5 weeks ago) \xe2\x80\xa2 2021-12-16 08:37:33 -0800\nEngine \xe2\x80\xa2 revision 890a5fca2e\nTools \xe2\x80\xa2 Dart 2.15.1\nRun Code Online (Sandbox Code Playgroud)\ndart pub 全局激活 flutterfire_cli
\n然后我再次运行上面的命令,但仍然收到相同的错误消息。
\n我应该怎么办?
\nhttps://dart.dev/guides/language/language-tour#generators
当您需要延迟生成值序列时,请考虑使用生成器函数。Dart 内置支持两种生成器函数:
如上所述,“惰性”对于同步生成器函数到底意味着什么?行为与正常功能有区别吗?
void main(){
Iterable<int> list1 = naturalsTo(3);
print(list1.toList());//[0, 1, 2]
print(naturalsTo(3).toList());//[0, 1, 2]
}
Iterable<int> naturalsTo(int n) sync* {
int k = 0;
while (k < n) yield k++;
}
Iterable<int> naturalsTo2(int n){
int k=0;
List<int> resultList = [];
for(k;k<n;k++){
resultList.add(k);
}
return resultList;
}
Run Code Online (Sandbox Code Playgroud)
上面代码的结果都返回相同的列表,但我不确定它们的行为有何不同。
“懒惰”到底是什么意思?
https://www.youtube.com/watch?v=2Cl0C-9dK48&list=PLjxrf2q8roU1fRV40Ec8200rX6OuQkmnl
\n类型 促销 | 解码颤振
\n在上面的视频中,有以下解释。
\n\n\nDart 没有密封类。这意味着每个类都可以扩展甚至实现。
\n
我有时会看到术语“密封类”,但我在 Dart 中找不到该术语的定义。\nDart 中是否有任何文档或明确定义的内容?
\n\xe2\x86\x93\n https://dart.dev/guides/language/language-tour#enumerated-types
\n\n\n注意:所有枚举都会自动扩展 Enum 类。它们也是密封的,这意味着它们不能被子类化、实现、混合或以其他方式显式实例化。
\n
我搜索的时候发现了上面这句话,但这到底是“密封类”的定义吗?
\n