可重现的代码:
void main() => runApp(MaterialApp(home: CountInheritedWidget(child: HomePage())));
class CountInheritedWidget extends InheritedWidget {
CountInheritedWidget({Widget child}) : super(child: child);
final Map<String, int> _map = {"count": 0};
// getter
int get value => _map["count"];
// setter
set value(int x) => _map["count"] = x; // is there anything like setState here?
@override
bool updateShouldNotify(CountInheritedWidget oldCounter) => true;
static CountInheritedWidget of(BuildContext context) => context.dependOnInheritedWidgetOfExactType<CountInheritedWidget>();
}
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center, …
Run Code Online (Sandbox Code Playgroud) ElevatedButton
和小部件中没有这样的属性OutlinedButton
来像常规RaisedButton
.
ElevatedButton(
onPressed: null,
disabledColor: Colors.brown, // Error
}
Run Code Online (Sandbox Code Playgroud) android intellij-idea android-emulator android-studio android-studio-bumblebee
假设我的pubspec.yaml
文件中有两个包。
abc: any
xyz: any
Run Code Online (Sandbox Code Playgroud)
现在,我只想更新abc
包,我该怎么做,有没有类似的命令
flutter update abc
Run Code Online (Sandbox Code Playgroud) 从这个线程我发现有很多方法可以从树层次结构中隐藏小部件。喜欢使用:
Visibility
:
Visibility(
visible: false,
child: Foo(),
);
Run Code Online (Sandbox Code Playgroud)
Offstage
:
Offstage(
offstage: true,
child: Foo(),
);
Run Code Online (Sandbox Code Playgroud)
Opacity
:
Opacity(
opacity: 0,
child: Foo(),
);
Run Code Online (Sandbox Code Playgroud)
if
健康)状况:
if (visible) {
child
}
Run Code Online (Sandbox Code Playgroud)
什么不是。
他们中的哪一个是首选(我知道Visibility
是那个,为什么Visibility
),if
条件和之间有什么区别Visibility
,我如何衡量性能。Opacity
文档提到:
不透明度比按需从树中添加和删除子小部件更有效。
那是什么意思,是为了if
条件吗?如果是,if
那么在这四个中处于什么位置?
我的标准流:
var stream = (StreamController<int>()..add(1)).stream;
stream.listen(print); // prints 1
Run Code Online (Sandbox Code Playgroud)
我的直播流:
var stream = (StreamController<int>.broadcast()..add(1)).stream;
stream.listen(print); // doesn't print anything
Run Code Online (Sandbox Code Playgroud) var ints = [0, 1, 2, 3];
var foo = ints.elementAt(1);
var bar = ints[1];
assert(foo == bar);
Run Code Online (Sandbox Code Playgroud)
elementAt
和操作员都[]
做同样的工作。两者之间有什么区别吗?如果没有,那么为什么我们可以使用它们时却没有[]
在类中定义?Iterable
elementAt
文件说:
不可折叠:每条消息对客户端应用程序都很重要并且需要传递。除通知消息外,所有消息默认都是不可折叠的。
这意味着数据消息是不可折叠的并且被认为是重要的。然而,文档还说:
当您的应用程序处于后台或终止时,设备会将纯数据消息视为低优先级,并将被忽略。
那么,它们实际上是否重要?如果重要,那么例如,如果应用程序在后台,它们为什么会被忽略。
文件说:
除通知消息外,所有消息默认都是不可折叠的。
我通过 Firebase 通知编辑器发送两条通知消息,并且是可折叠的,旧消息应该折叠(或被最新消息替换),但我可以看到这两条通知都显示在 Android 和 iOS 上。
那么,为什么通知消息被认为是“可折叠的”呢?
我的系统终端使用zsh
shell,但我的 Android Studio 终端使用bash
. 跑步时
echo $SHELL
Run Code Online (Sandbox Code Playgroud)
系统终端打印:
/bin/zsh
Android Studio 终端打印:
/bin/bash
我尝试使用以下命令更改 Android Studio 终端中的 shell:
chsh -s /bin/zsh
Run Code Online (Sandbox Code Playgroud)
但它不会改变外壳。这是我运行的命令:
iDecodes-mac:example iDecode$ chsh -s /bin/zsh
Changing shell for iDecode.
Password for iDecode:
chsh: no changes made
iDecodes-mac:example iDecode$ echo $SHELL
/bin/bash
Run Code Online (Sandbox Code Playgroud) 我在类中使用私有构造函数,但代码生成失败
该类
Foo
没有默认构造函数。
我正在使用最新json_serializable:
版本,即6.1.5
:
@JsonSerializable()
class Foo {
final int count;
Foo._(this.count);
factory Foo.fromJson(Map<String, dynamic> json) => _$Foo._FromJson(json);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?