我正在尝试在 Flutter 中创建一个下拉按钮。我从我的数据库中获取一个列表,然后我将列表传递给我的dropdownButton 所有工作,数据按预期显示,但是当我从中选择一个元素时,我收到此错误:
There should be exactly one item with [DropdownButton]'s value: Instance of 'Tag'.
Either zero or 2 or more [DropdownMenuItem]s were detected with the same value
'package:flutter/src/material/dropdown.dart':
Failed assertion: line 805 pos 15: 'items == null || items.isEmpty || value == null ||
items.where((DropdownMenuItem<T> item) {
return item.value == value;
}).length == 1'
Run Code Online (Sandbox Code Playgroud)
我尝试将DropdownButton 值设置为 null它可以工作,但随后我看不到所选元素。
这是我的代码:
FutureBuilder<List<Tag>>(
future: _tagDatabaseHelper.getTagList(),
builder: …Run Code Online (Sandbox Code Playgroud) dart drop-down-menu flutter dropdownbutton flutter-futurebuilder
我正在尝试将两个字符串列表相互比较并检查是否至少有一个完全相同的字符串..
例如:
List<String> list1 = ['1','2','3','4'];
List<String> list2 = ['1','5','6','7'];
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我将执行操作,因为两者具有相同的字符串,即1,并且它可能不止一个完全相同的字符串并且操作将相同。
但如果他们没有任何类似的字符串,那么我会做另一个动作。
我怎么能做这样的事情?
以下代码打印:
false
false
true
{{a: b}, {a: b}}
Run Code Online (Sandbox Code Playgroud)
码
import "dart:json" as JSON;
main() {
print(JSON.parse('{ "a" : "b" }') == JSON.parse('{ "a" : "b" }'));
print({ "a" : "b" } == { "a" : "b" });
print({ "a" : "b" }.toString() == { "a" : "b" }.toString());
Set s = new Set();
s.add(JSON.parse('{ "a" : "b" }'));
s.add(JSON.parse('{ "a" : "b" }'));
print(s);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用json并解析两个等效对象,将它们存储在一个Set中,希望它们不会被复制.情况并非如此,似乎是因为前两行(意外?)导致错误.正确比较两个Map对象的有效方法是什么,假设每个都是JSON.parse()的结果?
我有两个清单:
List fruits = ['apples', 'bananas'];
List foods = ['apples', 'bananas'];
Run Code Online (Sandbox Code Playgroud)
如何比较水果和食物,并确保两个列表具有相同顺序的相同对象?
我在将 HTTP 响应正文转换为 Flutter 列表时遇到问题。在调试器中,输出jsonDecode(response.body)['data']['logsread']看起来完全像
[
{
"id": "9fd66092-1f7c-4e60-ab8f-5cf7e7a2dd3b",
"email": "email@gmail.com"
}
]
Run Code Online (Sandbox Code Playgroud)
然而,这返回错误。
print((jsonDecode(response.body)['data']['logsread']) ==
[{
"id": "9fd66092-1f7c-4e60-ab8f-5cf7e7a2dd3b",
"email": "email@gmail.com"
}]); // This returns false.
Run Code Online (Sandbox Code Playgroud)
供参考。响应.body =>
"{"data":{"logsread":[{"id":"9fd66092-1f7c-4e60-ab8f-5cf7e7a2dd3b","email":"email@gmail.com"}]}}"
Run Code Online (Sandbox Code Playgroud) 我有以下问题。有两个包含文章的列表。在下面的示例中,结果打印false。但文章都是一样的。我认为是这样,因为这些是不同的对象,如果我在两个列表中添加article1,它将是true。
我还从这个问题中尝试了 DeepCollectionEquality.unordered().equals: How can I Compare Lists for equality in Dart?
但它也给了我错误的回报。在我的实际项目中,我有两个包含文章的列表。这些列表没有排序,因此一篇文章可以是一个列表中的第一篇,而具有相同 id 和名称的文章可以是另一个列表中的最后一篇。但如果两个列表具有相同的文章(具有相同的名称和 ID),则结果应为 true。
var a = List<Article>();
var b = List<Article>();
var article1 = Article(id: "1", name: "Beer");
var article2 = Article(id: "1", name: "Beer");
a.add(article1);
b.add(article2);
print(listEquals(a, b));
Run Code Online (Sandbox Code Playgroud) 我有个问题。使用 Dart 时,我无法检查 2 个数组是否相等。(在其他语言中,我可以使用 == 来实现)事实上,我可以使用 String 或 number 来实现 == 。
List arr1 = [1,2,3];
List arr2 = [1,2,3];
if (arr1 == arr2) {
print("equal");
} else {
print("not equal");
}
Run Code Online (Sandbox Code Playgroud)
// 输出:不相等。
所以我想知道这有什么意义。我的意思是,如果 == 仅适用于字符串或数字的情况(如果比较的值相同),我们该怎么办。如果我想检查列表、映射等的比较(相等),我该怎么做。它只适用于字符串和数字。
import 'package:flutter/material.dart';
import '../../Data/Globalvariable.dart' as global;
class MenuBar extends StatefulWidget {
final key = UniqueKey();
// final pin;
// MenuBar({this.pin='112'});
@override
_MenuBarState createState() {
return _MenuBarState();
}
}
class _MenuBarState extends State<MenuBar> {
ValueNotifier<List<String>> st = ValueNotifier(global.pincode);
Widget total() {
return ListView.builder(
itemCount: global.pincode.length,
itemBuilder: (context, index) {
final item = global.pincode[index];
return Dismissible(
key: UniqueKey(),
onDismissed: (direction) {
setState(() {
global.pincode.removeAt(index);
});
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text('$item Removed')));
},
background: Container(color: Colors.red),
child: ListTile(
title: Text(item),
),
);
},
);
} …Run Code Online (Sandbox Code Playgroud)