小编mrg*_*t96的帖子

可为空的表达式不能用作条件

我收到“可为空表达式”错误。问题出现在以下几行中:

left: isSideBarOpenedAsync.data ? 0 : 0,
right: isSideBarOpenedAsync.data ? 0 : screenWidth - 35,
Run Code Online (Sandbox Code Playgroud)

isSideBarOpenedAsync类型在哪里AsyncSnapshot<bool>

这是我收到的错误

可为空的表达式不能用作条件。null在将其用作条件之前,请尝试检查该值是否存在。

这是完整的代码供参考

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:solaris/constants.dart';
import 'package:rxdart/rxdart.dart';

class SideBar extends StatefulWidget {

  @override
  _SideBarState createState() => _SideBarState();
}

class _SideBarState extends State<SideBar> with SingleTickerProviderStateMixin<SideBar>{
  late AnimationController _animationController;
  late StreamController<bool> isSidebarOpenedStreamController;
  late Stream<bool> isSideBarOpenedStream;
  late StreamSink<bool> isSideBarOpenedSink;
  final _animationDuration = const Duration(milliseconds: 500);

  @override
  void initState(){
    super.initState();
    _animationController = AnimationController(vsync: this, duration: _animationDuration);
    isSidebarOpenedStreamController = PublishSubject<bool>();
    isSideBarOpenedStream …
Run Code Online (Sandbox Code Playgroud)

stream dart flutter flutter-animation dart-null-safety

24
推荐指数
2
解决办法
2万
查看次数

Flutter、Freezed:将 Class 设置为默认值

我有一个User包含一个Purchase类的类。我想让它不可为空,但不是必需的。所以这意味着我需要设置一个默认值。

\n

我在子类(购买)中没有必填字段,并提供了默认值。

\n

当我运行 build_runner 时,我收到一条错误,指出默认值必须是文字。\n并且我知道默认值必须是常量。

\n
[SEVERE] json_serializable:json_serializable on lib/domain/user/user.model.dart:\n\nError with `@JsonKey` on `purchase`. `defaultValue` is `_$_Purchase`, it must be a literal.\npackage:clean_simple_eats/domain/user/user.model.freezed.dart:323:18\n    \xe2\x95\xb7\n323 \xe2\x94\x82   final Purchase purchase;\n    \xe2\x94\x82                  ^^^^^^^^\n    \xe2\x95\xb5\n
Run Code Online (Sandbox Code Playgroud)\n

我意识到我可以使用 @JsonKey 创建自己的 toJson 和 fromJson,但我更愿意让 freeze 生成代码。有没有办法用最新版本的 freeze (v0.14.2) 来实现这一点?

\n

用户模型文件:

\n
[SEVERE] json_serializable:json_serializable on lib/domain/user/user.model.dart:\n\nError with `@JsonKey` on `purchase`. `defaultValue` is `_$_Purchase`, it must be a literal.\npackage:clean_simple_eats/domain/user/user.model.freezed.dart:323:18\n    \xe2\x95\xb7\n323 \xe2\x94\x82   final Purchase purchase;\n    \xe2\x94\x82                  ^^^^^^^^\n    \xe2\x95\xb5\n
Run Code Online (Sandbox Code Playgroud)\n

购买文件:

\n
import \'package:clean_simple_eats/features/purchase/domain/purchase.model.dart\';\nimport …
Run Code Online (Sandbox Code Playgroud)

json default-value dart flutter freezed

7
推荐指数
2
解决办法
9501
查看次数

ListView 不在定位的小部件中滚动

我目前有一个带有我AppBar和我的页面内容的背景的堆栈。
Container在页面中央显示一个,与Positioned包含网格/列表视图的小部件一起定位。

@override
  Widget build(BuildContext context) {
    return Scaffold(
      extendBodyBehindAppBar: true,
      appBar: VehicleScreenAppBar(
        title: title,
        context: context,
      ),
      body: LayoutBuilder(
        builder: (contxt, vehicleListConstraints) {
          return Stack(
            overflow: Overflow.visible,
            children: <Widget>[
              AppBarBackDrop(constraints: vehicleListConstraints),
              Positioned(
                top: vehicleListConstraints.maxHeight * .15,
                left: (vehicleListConstraints.maxWidth - vehicleListConstraints.maxWidth * .9) / 2,
                child: Container(
                  color: Colors.red,
                  height: vehicleListConstraints.maxHeight * .6,
                  width: vehicleListConstraints.maxWidth * .9,
                  child: ListView.builder(
                    itemCount: 20,
                    itemBuilder: (context, i) {
                      return Padding(
                        padding: const EdgeInsets.all(8.0),
                        child: Container(
                          height: 50, …
Run Code Online (Sandbox Code Playgroud)

listview scroll position dart flutter

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

使用 --no-sound-null-safety Flutter 生成应用程序包

我正在尝试通过 Android studio 生成应用程序包(构建 -> 生成签名包/APK),但在构建包时遇到错误。

Error: Cannot run with sound null safety, because the following dependencies
don't support null safety
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以添加参数--no-sound-null-safety,类似于在命令行中执行的操作?

android bundle android-studio flutter dart-null-safety

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

VSCode 片段:将文件名从 my_file_name 格式化为 MyFileName

我正在为 flutter/dart 创建自定义片段。我的目标是提取文件名(TM_FILENAME_BASE)删除所有下划线并将其转换为 PascalCase(或camelCase)。

这是我迄今为止所学到的有关正则表达式和 vscode 片段的链接。 https://code.visualstudio.com/docs/editor/userdefinesnippets

我已经能够使用以下代码很好地删除下划线

    ${TM_FILENAME_BASE/[\\_]/ /}
Run Code Online (Sandbox Code Playgroud)

我什至可以全部大写

    ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}
Run Code Online (Sandbox Code Playgroud)

然而,我似乎不能一次做两步。我不熟悉正则表达式,这只是我最近几天在摆弄它。

如果有人可以帮助程序员同事让编码变得更简单,我将不胜感激!

我希望“my_file_name”的输出为“MyFileName”。

regex code-snippets dart visual-studio-code flutter

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

flutter build_runner:针对 build.yaml 中的特定文件扩展名进行构建

我想加快 build_runner 所需的构建时间,并且我还想在build watch编辑没有任何要生成的文件的文件时防止运行时重新构建。

我知道这需要在build.yaml文件中进行编辑,但我无法让任何东西发挥作用。

这是我的构建文件

targets:
  $default:
    builders:
      auto_route_generator:
        generate_for: 
          include: [".route.dart"]
      freezed:
        generate_for: 
          include: [".model.dart"]
      json_serializable:
        generate_for:
          include: [".model.dart"]
        options:
          explicit_to_json: true
          include_if_null: false
Run Code Online (Sandbox Code Playgroud)

即使尝试添加enabled: false(这让我相信它会禁用该依赖项的构建),也不会执行任何操作并且文件会继续生成。

也许我只是误解了构建文件应该如何使用......?

code-generation dart flutter build-runner

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

如何将 FlutterViewController 添加到 UIViewController

我能找到的 Flutter 的 Add-to-App 的所有文档都演示了如何推送/继续/呈现新创建的 FlutterViewController。我需要将颤动视图添加到选项卡栏中的选项卡。我尝试将班级的超类更改为UIViewController有效FlutterViewController,但没有使用应用程序委托中创建的颤动引擎。此解决方案导致在启动屏幕中显示颤动视图之前,这是不希望的。

如何向 中添加颤动视图UIViewController?或者如何将引擎分配给FlutterViewController类内的引擎?

uiviewcontroller ios swift flutter flutter-add-to-app

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