我收到“可为空表达式”错误。问题出现在以下几行中:
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) 我正在尝试使用线程更改表单。最初我使用Hide()并Show()从下一个隐藏前一个表单,问题是当我关闭应用程序时,后台总是有东西在运行。我的想法是:从Form1点击一个按钮进入Form2,它可以选择是返回Form1还是进入Form3,它又可以选择返回Form2还是Form1
这是来自 Form1 按钮的一段代码,如果单击它必须将我带到 Form2。关键是它不会关闭 Form1,实际上它始终保留在后台,当我单击按钮关闭 Form2(使用Close ())时,程序不会关闭并保留在 Form1 上,如果我关闭它,则程序将最终关闭
第二种形式叫做OptionGeneral
Thread StartThread = null;
public void btnOptions_Click(object sender, EventArgs e)
{
StartThread = new Thread(SwitchForm);
StartThread.Start();
//Hide();
OptionGeneral option = new OptionGeneral();
option.Show();
}
public void SwitchForm()
{
StartThread.Abort();
}
Run Code Online (Sandbox Code Playgroud)