sorting - 如何在列表视图颤动中使用排序功能
问题描述
我正在制作一个颤振应用程序,其中产品列表中的价格等项目必须按升序排列。在互联网上搜索后,我想出了使用 compareTo 和 sort 函数的解决方案,但不幸的是,我在 sort() 上遇到错误,即:这里的表达式有一个 void 类型,因此不能使用。整个正确的代码在 Github https://github.com/MaidaFarooqi9/Application/blob/master/lib/ProductScreen.dart 我要修改的代码部分是
return Container(
child:ListView.separated(
itemBuilder: (context, index){
return ListTile(
title:Text(products[index].name),
leading:products[index].i,
subtitle:Column(
children:<Widget>[
if (!ProductScreen.name) Text("\$${products[index].price}",
style: TextStyle(color: Colors.redAccent, fontSize: 20, fontWeight: FontWeight.w500),)
else
Text(products.sort((a,b)=>a.price.compareTo(b.price))) ,
if-else 条件在 if() 处显示未排序的列表,否则价格将按升序排列
解决方案
只需查看我从您给定的示例代码创建的这个示例:
import 'package:flutter/material.dart';
import 'package:percent_indicator/linear_percent_indicator.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
MyApp({Key key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: SafeArea(child: SampleApp()),
),
);
}
}
class SampleApp extends StatefulWidget {
SampleApp({Key key}) : super(key: key);
@override
_SampleAppState createState() => _SampleAppState();
}
class _SampleAppState extends State<SampleApp> {
var products = [
Product("sample", 12),
Product("name", 50),
Product("azpc", 78),
Product("hplm", 3),
Product('ampl', 2),
];
@override
void initState() {
// TODO: implement initState
super.initState();
products.sort((a, b) => a.price.compareTo(b.price));
}
@override
Widget build(BuildContext context) {
return Container(
child: ListView.separated(
itemBuilder: (context, index) {
return Card(
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(products[index].name),
Text(products[index].price.toString()),
],
),
),
);
},
separatorBuilder: (context, int) => Divider(),
itemCount: products.length),
);
}
}
class Product {
final String name;
final double price;
Product(this.name, this.price);
}
让我知道它是否有效。
推荐阅读
- java - 当我们说 Liferay 中的 Group 以及 Group 由什么组成时,这意味着什么?及其用途?
- javascript - 使用 postgresql 从 url 加载图像,但仅填充文本链接
- int - 查询 int 以在 cosmos db 中搜索?
- angular - 我在 Angular 7 中创建了一个库项目。我想在另一个项目中使用这个库项目而不发布。有什么办法吗?
- amazon-web-services - AWS Cognito Lambda 授权方 - 401 未经授权的错误
- c++ - Qt5Quickd.lib(Qt5Quickd.dll):致命错误 LNK1112:模块机器类型“x64”与目标机器类型“x86”冲突
- php - 如何使用工作代码在 php 中使用 Ajax 调用创建磁卡读卡器代码?
- django - non_field_errors,无效数据。DRF
- excel - 删除第一个单元格时自动向上移动列中的单元格
- dart - 如何找到 Pub 包的大小?