目前,我们的代码库中有很多类,它们使用相同的元注释。一个例子是:
@autoEquatable
@immutable
@jsonSerializable
class SignInWithFacebookEvent extends LoginEvent {}
Run Code Online (Sandbox Code Playgroud)
Dart 有没有一种方法可以将它们合并为一个?例如:
@event
class SignInWithFacebookEvent extends LoginEvent {}
Run Code Online (Sandbox Code Playgroud)
这会简单得多,而且如果我需要从所有事件类中添加/编辑/删除另一个元注释,我可以只添加/编辑/删除一个,而无需编辑数百个类。
编辑:
更好的是元注释的继承,例如:
@autoEquatable
@immutable
@jsonSerializable
class LoginEvent {}
Run Code Online (Sandbox Code Playgroud)
所有子类都有这些注释。这样的事情可能吗?
我想在 Flutter 中创建一个 TextField。TextField 用于十进制数字。所以我设定了keyboardType: TextInputType.numberWithOptions(decimal: true)。现在我在 iOS 上得到了一个数字键盘,但这个数字键盘有一个句点 (.),而不是逗号 (,)。iOS 设备的语言是德语。
我当前的文本字段:
\n\nTextField(\n key: Key("pricePerLiter"),\n style: TextStyle(color: inputTextColor),\n textAlign: TextAlign.end,\n focusNode: pricePerLiterFocusNode,\n keyboardType:\n TextInputType.numberWithOptions(decimal: true),\n decoration: inputDecoration.copyWith(\n suffixText: "\xe2\x82\xac", errorText: pricePerLiterError),\n controller: pricePerLiterTextController,\n onEditingComplete: () {},\n onChanged: (value) {},\n)\nRun Code Online (Sandbox Code Playgroud)\n\n我的本地化在我的 Material 应用程序中设置如下:
\n\nMaterialApp(\n localizationsDelegates: [\n GlobalMaterialLocalizations.delegate,\n GlobalWidgetsLocalizations.delegate,\n ],\n supportedLocales: [\n const Locale(\'de\', \'DE\'),\n ],\n home: MyHomePage(),\n)\nRun Code Online (Sandbox Code Playgroud)\n\n我需要更改什么才能获得带有逗号 (,) 而不是句点 (.) 的数字键盘?
\n可以在这里找到一个最小的可重现示例: https: //github.com/HerrNiklasRaab/repro-widget-test-overflow
\n我当前的应用程序如下所示:
\nimport \'package:flutter/material.dart\';\n\nvoid main() {\n runApp(MaterialApp(\n home: Scaffold(\n body: DashboardNewsItem(),\n )));\n}\n\nclass DashboardNewsItem extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return Container(\n color: Colors.green,\n width: 165,\n height: 100,\n child: Row(\n children: <Widget>[\n Text(\n "Zu Instagram",\n ),\n Icon(Icons.arrow_forward)\n ],\n ),\n );\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n如果我在设备上运行它,它看起来如下所示:\n
一旦我使用以下小部件测试运行此命令:
\nimport \'package:flutter/material.dart\';\nimport \'package:flutter_test/flutter_test.dart\';\nimport \'package:test_ble/main.dart\';\n\nvoid main() {\n testWidgets(\'Counter increments smoke test\', (WidgetTester tester) async {\n await tester.pumpWidget(MaterialApp(\n home: Scaffold(\n body: DashboardNewsItem(),\n )));\n });\n}\nRun Code Online (Sandbox Code Playgroud)\n我得到这个异常:
\nCounter increments smoke test:\n\n\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1 …Run Code Online (Sandbox Code Playgroud) 请投票: https ://github.com/dart-lang/sdk/issues/40198
我想知道如何在 vs-code 中调试时获得未来的价值?现在我需要引入另一个临时变量来让调试器等待该语句。这就是我目前访问值的方式:
Future<void> disconnect2() async {
var conn = await isConnected;
if (conn) await internalDisconnect();
}
Run Code Online (Sandbox Code Playgroud)
但我想写下以下内容:
Future<void> disconnect() async {
if (await isConnected) await internalDisconnect();
}
Run Code Online (Sandbox Code Playgroud)
并且仍然能够isConnected使用调试器访问 的值。
到目前为止我尝试过的:
尝试将表情添加(await isConnected)到手表中。

(await isConnected)尝试在调试控制台中
评估表达式。
尝试将表情添加isConnected到手表中。

isConnected尝试在调试控制台中
评估表达式。
尝试通过将鼠标悬停在实例上来访问该值。在屏幕截图中它是空的,但大多数时候我只能访问未来的对象。

有没有什么简单的方法可以在调试时获取未来的价值?
有没有关于如何在调试时停止进入外部库代码的解决方案?在 Visual Studio Code 中,您可以选择设置:“debugExternalLibraries”。Android Studio 有类似的选项吗?
在我的 Flutter 项目中,我有以下代码:
if(await model.login(loginMailTextController.text,
loginPasswordTextController.text)){
Navigator.of(context).pushReplacementNamed("/main");
}
Run Code Online (Sandbox Code Playgroud)
这段代码在我的模型中调用了这个函数:
Future<bool> login(String mail, String password) async {
_auth.signInWithEmailAndPassword(email: mail, password: password);
return true; //Makes no sense, only for testing
}
Run Code Online (Sandbox Code Playgroud)
它按预期工作并调用了 navigator 方法,但是如果我在方法之前添加awaitsignInWithEmailAndPassword:
Future<bool> login(String mail, String password) async {
await _auth.signInWithEmailAndPassword(
email: mail, password: password);
return true; //Debugger won't stop there when a breakpoint is set
}
Run Code Online (Sandbox Code Playgroud)
那么 if 语句中的表达式为假。此外,当在标记行上设置断点时,调试器不会停止。在signInWithEmailAndPassword方法上设置断点就像魅力一样。
这是一个错误还是我犯了一个错误?
Visual Studio Code 的智能感知目前具有以下行为:
在 Visual Studio 中,以下行为是默认行为:
是否有任何设置可以更改 Visual Studio 行为?
我想以以下格式存储数据:
{
"chatName": "Football",
"chatMembers":
[
{
"userId": "nSWnbKwL6GW9fqIQKREZENTdVyq2",
"name": "Niklas"
},
{
"userId": "V3QONGrVegQBnnINYHzXtnG1kXu1",
"name": "Timo"
},
]
}
Run Code Online (Sandbox Code Playgroud)
我的目标是让所有的聊天记录,其中在用户与签约userId是在chatMembers列表中。如果已userId登录用户的不在chatMembers属性中,则应忽略该聊天。这可能吗?
如果这不可能,那么我该如何通过子集合来实现呢?
我的开发语言是dart,但是您也可以发布其他语言的解决方案。
我目前的尝试是这样,但这不起作用:
_firestore.collection(collectionName).where("chatMembers.userId", isEqualTo: userId).snapshots()
Run Code Online (Sandbox Code Playgroud) 根据这个问题:“选中复选框时 Twitter Bootstrap 3 崩溃”我已经尝试过这个解决方案,因为它既简单又干净。
http://jsfiddle.net/L0h3s7uf/1/
<div class="panel-group driving-license-settings" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<div class="checkbox">
<label data-toggle="collapse" data-target="#collapseOne">
<input type="checkbox"/> I have Driver License
</label>
</div>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in">
<div class="panel-body">
<div class="driving-license-kind">
<div class="checkbox">
<input type="checkbox" value="">A</div>
<div class="checkbox">
<input type="checkbox" value="">B</div>
<div class="checkbox">
<input type="checkbox" value="">C</div>
<div class="checkbox">
<input type="checkbox" value="">D</div>
<div class="checkbox">
<input type="checkbox" value="">E</div>
</div>
</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但是有了这个“解决方案”,你就有了问题。如果您太快地单击复选框,该区域会折叠,但复选框会被选中。
我怎样才能防止这个双击问题?
我在用:
我在我的 PC 上使用 16 GB RAM。这开始发生在没有任何理由的工作中,据我所知。如果我启动 VS Code,这总是会发生。VS Code 在底部栏中显示分析。搜索或转到定义之类的东西不起作用。
我还删除了 Windows 并重新安装了它,其中包含用于编程 flutter 的所有必需程序。
任何人都知道问题是什么?
链接到我当前项目的源代码:https : //drive.google.com/file/d/1Tk1GEuLKml0MJvFWP916Zszkeo-dpioe/view?usp=sharing
VS Code 扩展包括: - Dart 插件 - Flutter 插件 - Matrial Icon Pack
Flutter 0.9.4 • 频道测试版 • https://github.com/flutter/flutter.git 框架 • 修订版 f37c235c32(3 周前) • 2018-09-25 17:45:40 -0400 引擎 • 修订版 74625aed32 工具 • Dart 2.1.0-dev.5.0.flutter-a2eb050044
VS 代码版本为:1.28.1
以下代码段只是我真实情况的最小化版本。在我的实际情况中,这些GestureDetectors位于不同的小部件中。我的问题是,该onVerticalDragUpdate事件仅由内部 GestureDetector 接收。我什至behavior将内部的设置GestureDetector为HitTestBehavior.translucent,这意味着事件应该冒泡到父小部件。或者我有什么问题吗?
void main() {
debugPaintPointersEnabled = true;
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return GestureDetector(
onVerticalDragUpdate: (details) {
var test = "test";
},
child: GestureDetector(
behavior: HitTestBehavior.translucent,
onVerticalDragUpdate: (details) {
var test = "test";
},
child: Container(height: 100, width: 100, color: Colors.red),
));
}
}
Run Code Online (Sandbox Code Playgroud)