gpt4 book ai didi

list - Flutter/Dart:如何按键对列表进行排序?

转载 作者:行者123 更新时间:2023-12-03 04:48:53 31 4
gpt4 key购买 nike

我正在尝试按列表按字母顺序对列表进行排序,然后再将其显示在ListView.builder中,但这样做没有任何运气。这是我的代码:

class GlossaryItem {
String item;
String definition;

GlossaryItem({String i, String d}) {
item = i;
definition = d;
}
}

class Glossary {
int _glossaryNumber = 0;

List<GlossaryItem> _glossaryBank = [
GlossaryItem(
i: 'item a',
d: 'definition a',
),
GlossaryItem(
i: 'item d',
d: 'definition d',
),
GlossaryItem(
i: 'item b',
d: 'definition b',
),
GlossaryItem(
i: 'item c',
d: 'definition c',
),
];

_glossaryBank.sort((a, b) {
int compare = a.item.compareTo(b.item);
return compare;
});

int getCount() {
return _glossaryBank.length;
}

String getSpecificItem(index) {
return _glossaryBank[index].item;
}

String getSpecificDefinition(index) {
return _glossaryBank[index].definition;
}
}

我在 _glossaryBank.sort()上收到一条错误消息,提示“构造函数的名称必须与封闭类的名称匹配。”我浏览了许多页面,似乎无法解决这个问题。

编辑:以下更改了它,现在在该页面上没有出现错误:
  void sort() {
_glossaryBank.sort((a, b) {
int compare = a.item.compareTo(b.item);
return compare;
});

但是,当尝试启动它时,出现其他错误。这是我启动它的其他页面:
import 'package:flutter/material.dart';
import '../dictionary/glossarylist.dart';

//Call glossary
var glossary = Glossary();
glossary.sort();

class GlossaryPage extends StatefulWidget {
GlossaryPage({
Key key,
});

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

class _GlossaryPageState extends State<GlossaryPage> {

Widget printDefinitions() {
return ListView.builder(
itemCount: glossary.getCount(),
itemBuilder: (BuildContext context, int index) {
// return row
return Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Text(
glossary.getSpecificItem(index) + ':',
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
Text(
glossary.getSpecificDefinition(index),
style: TextStyle(
fontStyle: FontStyle.italic,
),
),
],
),
);
},
shrinkWrap: true,
physics: ClampingScrollPhysics(),
);
}

@override
Widget build(BuildContext context) {
return Container(
color: Colors.teal[300],
child: SafeArea(
child: Scaffold(
appBar: [omitted code...]
body: Padding(
padding: const EdgeInsets.all(15.0),
child: printDefinitions(),
),
),
),
);
}
}

最佳答案

问题是您在运行方法之外具有_glossaryBank。您必须编写一些可以执行代码的地方。

class Glossary {
int _glossaryNumber = 0;

List<GlossaryItem> _glossaryBank = [
GlossaryItem(
i: 'item a',
d: 'definition a',
),
GlossaryItem(
i: 'item d',
d: 'definition d',
),
GlossaryItem(
i: 'item b',
d: 'definition b',
),
GlossaryItem(
i: 'item c',
d: 'definition c',
),
];

void sort() {
_glossaryBank.sort((a, b) {
int compare = a.item.compareTo(b.item);
return compare;
});
}
}

无论您在哪里上课,都必须使用它

var glossary = Glossary();
glossary.sort();

我创建了一个有关它如何工作的小型CodePen。
https://codepen.io/md-weber/pen/bGVjdap

关于list - Flutter/Dart:如何按键对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61759492/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com