小编森口万*_*万太郎的帖子

使用 Android Studio 4.1 更新“发现与新版本不兼容的插件:Firebase 服务”有一条警告消息

在此处输入图片说明

android studio更新通知中,红字如上

发现与新版本不兼容的插件:Firebase 服务

我收到上述警告,我不明白其含义。这是否意味着更新 android studio 后 Firebase 相关包将无法运行?

我不应该更新android studio吗?但是,我认为似乎没有永远不更新 android studio 的选项

我目前正在使用 Flutter 和 Firebase 构建应用程序,但是根据项目的不同,Firebase 相关包的版本可能会有所不同,我该怎么办?

android firebase android-studio flutter

10
推荐指数
1
解决办法
689
查看次数

Flutter:什么时候应该使用工厂构造函数?

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)

dart flutter

7
推荐指数
1
解决办法
1万
查看次数

Flutter 中的“服务扩展”是什么?

https://flutter.dev/docs/testing/build-modes

上面的页面有以下解释。
在调试模式下,启用服务扩展。
在发布模式下,服务扩展被禁用。Flutter 中的“服务扩展”是什么?

flutter

6
推荐指数
1
解决办法
824
查看次数

Dart:Dart 中的实现和扩展有什么区别

https://dart.dev/guides/language/language-tour#implicit-interfaces

我见过使用“实现”的代码,所以我正在研究“实现”。但我无法通过查看官方文档来真正区分与扩展的区别。

查看官方文档(上页)中的示例代码,看起来它只是在执行使用 extends with Implements 可以执行的操作。然后我想知道是否应该使用“extends”。我想到目前为止我已经了解了继承(扩展)和混合(与)。Dart 文档中也提到了“接口”这个词,但是对于“接口”有明确的定义。我什至找不到它在哪里。我对其他语言的界面了解不多,所以很难得到图像。

继承和实现之间到底有什么区别?由于差异,什么时候使用继承“extends”,什么时候使用实现“implements”?

样本中是否存在明显差异的地方?

dart flutter

4
推荐指数
1
解决办法
1950
查看次数

我想设置一个包含 BorderRadius.circular 的值作为构造函数参数的默认值

我已经为 ElevatedButton 定义了一个自定义小部件,我想让 shape 字段成为可选的,如下所示,并在没有传递值时使用初始值,但是当我按照上面的方式编写时,会出现以下错误。..

\n
class 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;\n
Run Code Online (Sandbox Code Playgroud)\n
//error\nThe default value of an optional parameter must be constant.\n
Run Code Online (Sandbox Code Playgroud)\n

也许这意味着 BorderRadius.circular 构造函数不是 const,

\n

如果想使用下面的OutlinedBorder作为默认值应该怎么写?\nRoundedRectangleBorder(\nborderRadius: BorderRadius.circular(30),\n)

\n

dart flutter

3
推荐指数
1
解决办法
868
查看次数

无法安装 FlutterFire CLI

https://firebase.google.com/codelabs/firebase-get-to-know-flutter#3

\n
dart pub global activate flutterfire_cli\n
Run Code Online (Sandbox Code Playgroud)\n

我按照上页的说明执行了上述命令。\n执行此操作时,我收到以下错误消息。

\n
The 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.\n
Run Code Online (Sandbox Code Playgroud)\n

当我运行 flutter Upgrade 进行尝试时,我收到以下消息。

\n
Flutter 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\n
Run Code Online (Sandbox Code Playgroud)\n

dart pub 全局激活 flutterfire_cli

\n

然后我再次运行上面的命令,但仍然收到相同的错误消息。

\n

我应该怎么办?

\n

dart firebase flutter

2
推荐指数
1
解决办法
3494
查看次数

Dart:同步生成器函数“延迟”生成结果的行为到底是什么?

https://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)

上面代码的结果都返回相同的列表,但我不确定它们的行为有何不同。

“懒惰”到底是什么意思?

dart

1
推荐指数
1
解决办法
91
查看次数

我想知道Dart中“密封类”的定义

https://www.youtube.com/watch?v=2Cl0C-9dK48&list=PLjxrf2q8roU1fRV40Ec8200rX6OuQkmnl

\n

类型 促销 | 解码颤振

\n

在上面的视频中,有以下解释。

\n
\n

Dart 没有密封类。这意味着每个类都可以扩展甚至实现。

\n
\n

我有时会看到术语“密封类”,但我在 Dart 中找不到该术语的定义。\nDart 中是否有任何文档或明确定义的内容?

\n

\xe2\x86\x93\n https://dart.dev/guides/language/language-tour#enumerated-types

\n
\n

注意:所有枚举都会自动扩展 Enum 类。它们也是密封的,这意味着它们不能被子类化、实现、混合或以其他方式显式实例化。

\n
\n

我搜索的时候发现了上面这句话,但这到底是“密封类”的定义吗?

\n

dart flutter sealed-class

0
推荐指数
1
解决办法
3334
查看次数

标签 统计

flutter ×7

dart ×6

firebase ×2

android ×1

android-studio ×1

sealed-class ×1