Sorting 如何在列表视图中使用排序功能

Sorting 如何在列表视图中使用排序功能,sorting,flutter,listview,Sorting,Flutter,Listview,我正在制作一个关于颤振的应用程序,其中产品列表中的价格等项目必须按递增顺序排列。在互联网上搜索后,我提出了使用compareTo和sort函数的解决方案,但不幸的是,我在sort()上出现了一个错误,即:这里的表达式的类型为void,因此无法使用。 整个正确的代码都在Github上 我要修改的代码部分是 return Container( child:ListView.separated( itemBuilder: (context, index){

我正在制作一个关于颤振的应用程序,其中产品列表中的价格等项目必须按递增顺序排列。在互联网上搜索后,我提出了使用compareTo和sort函数的解决方案,但不幸的是,我在sort()上出现了一个错误,即:这里的表达式的类型为void,因此无法使用。 整个正确的代码都在Github上 我要修改的代码部分是

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))) ,
返回容器(
子项:ListView.separated(
itemBuilder:(上下文,索引){
返回列表块(
标题:文本(产品[索引].名称),
领先:产品[索引].i,
副标题:专栏(
儿童:[
如果(!ProductScreen.name)文本(\${products[index].price}),
样式:TextStyle(颜色:Colors.redAccent,fontSize:20,fontWeight:fontWeight.w500),)
其他的
文本(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);
}

导入“包装:颤振/材料.省道”;
导入“包:百分比指示器/线性百分比指示器.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了StatefulWidget{
MyApp({Key}):超级(Key:Key);
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
主体:安全区域(子项:SampleApp()),
),
);
}
}
类SampleApp扩展StatefulWidget{
SampleApp({Key}):超级(Key:Key);
@凌驾
_SampleAppState createState();
}
类_SampleAppState扩展状态{
var乘积=[
产品(“样品”,12),
产品(“名称”,50),
产品(“azpc”,78),
产品(“hplm”,3),
产品('ampl',2),
];
@凌驾
void initState(){
//TODO:实现initState
super.initState();
产品分类((a,b)=>a.price.compareTo(b.price));
}
@凌驾
小部件构建(构建上下文){
返回容器(
子项:ListView.separated(
itemBuilder:(上下文,索引){
回程卡(
孩子:填充(
填充:常数边集全部(8.0),
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
文本(产品[索引].name),
文本(产品[索引].price.toString()),
],
),
),
);
},
separatorBuilder:(context,int)=>Divider(),
itemCount:产品。长度),
);
}
}
类产品{
最后的字符串名;
最终双倍价格;
产品(此名称、此价格);
}

让我知道它是否有效。

请查看我根据您给定的示例代码创建的示例:

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);
}

导入“包装:颤振/材料.省道”;
导入“包:百分比指示器/线性百分比指示器.dart”;
void main()=>runApp(MyApp());
类MyApp扩展了StatefulWidget{
MyApp({Key}):超级(Key:Key);
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
主体:安全区域(子项:SampleApp()),
),
);
}
}
类SampleApp扩展StatefulWidget{
SampleApp({Key}):超级(Key:Key);
@凌驾
_SampleAppState createState();
}
类_SampleAppState扩展状态{
var乘积=[
产品(“样品”,12),
产品(“名称”,50),
产品(“azpc”,78),
产品(“hplm”,3),
产品('ampl',2),
];
@凌驾
void initState(){
//TODO:实现initState
super.initState();
产品分类((a,b)=>a.price.compareTo(b.price));
}
@凌驾
小部件构建(构建上下文){
返回容器(
子项:ListView.separated(
itemBuilder:(上下文,索引){
回程卡(
孩子:填充(
填充:常数边集全部(8.0),
子:列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
文本(产品[索引].name),
文本(产品[索引].price.toString()),
],
),
),
);
},
separatorBuilder:(context,int)=>Divider(),
itemCount:产品。长度),
);
}
}
类产品{
最后的字符串名;
最终双倍价格;
产品(此名称、此价格);
}

让我知道它是否有效。

只要做一个升级投票,它就可以完成,对其他人也有帮助。只要做一个升级投票,它就可以完成,对其他人也有帮助。