【问题标题】:Countdown in a ListView (Flutter)ListView 中的倒计时 (Flutter)
【发布时间】:2020-10-11 07:34:15
【问题描述】:

我想找到一种解决方案来从日期创建倒计时并将它们放在 ListView 中。我希望这不会在使用它时过多地减慢应用程序的速度。 我已经有一个想要保留的代码,它是一个带有图像和文本的 RecyclerView。

这是代码,如果你需要什么我会发给你。

import 'package:flutter/material.dart';
import 'package:cached_network_image/cached_network_image.dart';
import '../recyclerview/data.dart';
import 'package:watch/constants.dart';


class ListViewExample extends StatefulWidget {
  @override 
  State<StatefulWidget> createState() {
    return new ListViewExampleState(
    );
  }
}

class ListViewExampleState extends State<ListViewExample>{
  List<Container> _buildListItemsFromItems(){
    int index = 0;
    return item.map((item){

      var container = Container(
        decoration: index % 2 == 0?
        new BoxDecoration(color: const Color(0xFFFFFFFF)):
          new BoxDecoration(
            color: const Color(0xFFFAFAF5)
          ),
        child: new Row(
          children: <Widget>[
            new Container(
              margin: new EdgeInsets.all(5.0),
              child: new CachedNetworkImage(
                imageUrl: item.imageURL,
                width: 200.0,
                height: 100.0,
                fit: BoxFit.cover,
              ),
            ),
            Expanded(
              child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.start,
                children: <Widget>[
                Container(
                  padding: const EdgeInsets.only(bottom: 75.0 ),
                  child: Text(
                    item.title,
                    style: kItemTitle,
                  ),
                ),
                Container(
                  padding: const EdgeInsets.only(left: 15.0),
                  child:Text(
                    item.description,
                    style: kItemDescription,
                  ),
                ),
                ]),
            )
          ],
        )
      );
      index = index + 1;
      return container;
    }).toList();
  }
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
       appBar: AppBar(
         title: Text('Accueil', style: kAppBarStyle,),
          backgroundColor: Colors.white,  
          elevation: 0,
       ),
       body: ListView(
      children: _buildListItemsFromItems(),
    ),
    );
  }
}

谢谢!

更新:添加倒计时看这个帖子:Date Countdown Timer

对于延迟加载,我已将 ListView 更改为 ListView.builder

【问题讨论】:

    标签: date flutter dart android-recyclerview countdown


    【解决方案1】:

    如果需要延迟加载,建议使用Listview.builder,而不是只将列表放入ListView。

    https://flutter.dev/docs/cookbook/lists/long-lists

    ListView 替换为ListView.builder

    ListView.builder(
        itemCount: // items.length
        itemBuilder: (buildContext, index) {}, // define what Widget for each index
    )
    

    这是您的示例代码。 itemBuilder 函数中已经存在索引。

    ...
      body: ListView.builder(
        itemCount: items.length,
        itemBuilder: (buildContext, index) {
          return Container(
            decoration: index % 2 == 0
                ? new BoxDecoration(color: const Color(0xFFFFFFFF))
                : new BoxDecoration(color: const Color(0xFFFAFAF5)),
            child: new Row(
              children: <Widget>[
                new Container(
                  margin: new EdgeInsets.all(5.0),
                  child: new CachedNetworkImage(
                    imageUrl: item.imageURL,
                    width: 200.0,
                    height: 100.0,
                    fit: BoxFit.cover,
                  ),
                ),
                Expanded(
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: <Widget>[
                      Container(
                        padding: const EdgeInsets.only(bottom: 75.0),
                        child: Text(
                          items[index].title,
                        ),
                      ),
                      Container(
                        padding: const EdgeInsets.only(left: 15.0),
                        child: Text(
                          items[index].description,
                        ),
                      ),
                    ],
                  ),
                )
              ],
            ),
          );
        },
      ),
    ...
    

    【讨论】:

    • 我是一个初学者,我怎么能用我的代码做到这一点?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 2021-10-14
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多