Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 带布尔的倒数计时器中的ONED_List_Flutter_Dart_Boolean - Fatal编程技术网

List 带布尔的倒数计时器中的ONED

List 带布尔的倒数计时器中的ONED,list,flutter,dart,boolean,List,Flutter,Dart,Boolean,当包flift\u countdown\u timer:1.5.0中的CountdownTimer()完成时,我尝试将布尔设置为true。但是它改变了我的列表视图中所有的倒计时。我想我必须使用列表,但我不知道如何使用它。我是初学者,请宽容一点。这是我的代码: main.dart import 'package:flutter/material.dart'; import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';

当包flift\u countdown\u timer:1.5.0中的CountdownTimer()完成时,我尝试将布尔设置为true。但是它改变了我的列表视图中所有的倒计时。我想我必须使用列表,但我不知道如何使用它。我是初学者,请宽容一点。这是我的代码:

main.dart

import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import './data.dart';
import './favorite_screen.dart';
import './home_list.dart';

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class Item {
  final String title;
  final String description;
  final String imageURL;
  final int countdown;
  final int id;
  final bool boole;

  Item({
    this.title,
    this.description,
    this.imageURL,
    this.countdown,
    this.id,
    this.boole,
  });
}

class _HomeState extends State<Home> {
  List<Item> savedItems = new List<Item>();
  //List<bool> addFavorite = List<bool>();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Home'),
          actions: [
            IconButton(
                icon: Icon(Icons.favorite_border),
                onPressed: () => pushToFavorite(context))
          ],
        ),
        body: ListView.builder(
            itemCount: itemData.length,
            itemBuilder: (context, index) {
              bool isSaved = savedItems.contains(itemData[index]);
              return Column(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: <Widget>[
                        TextObject(
                            itemData[index].title, itemData[index].description),
                        TimerWidget(itemData[index].countdown),
                        Spacer(),
                        Container(
                            padding: const EdgeInsets.only(left: 8.0, top: 8.0),
                            child: Row(
                                mainAxisAlignment: MainAxisAlignment.start,
                                crossAxisAlignment: CrossAxisAlignment.center,
                                children: <Widget>[
                                  Padding(
                                    padding: const EdgeInsets.all(7.0),
                                    child: GestureDetector(
                                      child: Icon(
                                        isSaved
                                            ? Icons.favorite
                                            : Icons.favorite_border,
                                        color: isSaved ? Colors.red : null,
                                        size: 32,
                                      ),
                                      onTap: () {
                                        setState(() {
                                          if (isSaved) {
                                            savedItems.remove(itemData[index]);
                                            isSaved = false;
                                          } else {
                                            savedItems.add(itemData[index]);
                                            isSaved = true;
                                          }
                                        });
                                      },
                                    ),
                                  ),
                                ])),
                      ],
                    ),
                  )
                ],
              );
            }));
  }

  Future pushToFavorite(BuildContext context) {
    return Navigator.of(context).push(MaterialPageRoute(
        builder: (context) => Favorite(favoriteItem: savedItems)));
  }
}
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';

class TextObject extends StatelessWidget {
  final String title;
  final String description;
  const TextObject(this.title, this.description);
  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      crossAxisAlignment: CrossAxisAlignment.start,
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        Spacer(),
        //Titre
        Container(
          padding: const EdgeInsets.only(top: 15.0),
          child: FittedBox(
            child: Text(
              title,
              style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
            ),
          ),
        ),
        //Decription
        Container(
          padding: const EdgeInsets.only(left: 10.0, top: 15.0),
          child: Text(
            description,
            style: TextStyle(fontSize: 18, fontWeight: FontWeight.normal),
          ),
        ),
        Spacer(),
      ],
    );
  }
}

class TimerWidget extends StatefulWidget {
  final int date;
  const TimerWidget(
    this.date,
  );

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

class _TimerWidgetState extends State<TimerWidget> {
  bool finished = false;
  @override
  Widget build(BuildContext context) {
    return Container(
        padding: const EdgeInsets.only(top: 10.0),
        child: finished == false ? CountdownTimer(
          daysSymbol: new Text("j "),
          hoursSymbol: new Text(" : "),
          minSymbol: new Text(" : "),
          secSymbol: new Text(""),
          endTime: widget.date,
          textStyle: TextStyle(
            fontSize: 14,
            fontWeight: FontWeight.bold,
            color: Colors.black,
          ),
          onEnd: () {
            setState(() {
              finished = true;
            });
          },
        ) : Text('It is finished'));
  }
}
导入“包装:颤振/材料.省道”;
导入“包:颤振倒计时定时器/颤振倒计时定时器.dart”;
导入“/data.dart”;
导入“./favorite_screen.dart”;
导入“./home\u list.dart”;
类Home扩展了StatefulWidget{
@凌驾
_HomeState createState()=>\u HomeState();
}
类项目{
最后的字符串标题;
最终字符串描述;
最终字符串imageURL;
最后整数倒计时;
最终int id;
最后的布尔布尔布尔;
项目({
这个名字,
这个.说明,,
这个.imageURL,
这是倒计时,
这个身份证,
这个,布尔,
});
}
类(HomeState扩展状态){
List savedItems=新列表();
//List addFavorite=List();
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“主页”),
行动:[
图标按钮(
图标:图标(图标。收藏夹边框),
按下时:()=>pushToFavorite(上下文))
],
),
正文:ListView.builder(
itemCount:itemData.length,
itemBuilder:(上下文,索引){
bool isSaved=savedItems.contains(itemData[index]);
返回列(
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
文本对象(
itemData[index]。标题,itemData[index]。说明),
TimerWidget(itemData[索引].倒计时),
垫片(),
容器(
填充:仅限常量边集(左:8.0,顶:8.0),
孩子:排(
mainAxisAlignment:mainAxisAlignment.start,
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
填充物(
填充:常数边集全部(7.0),
儿童:手势检测器(
子:图标(
保存
?图标。收藏
:Icons.favorite_边框,
颜色:isSaved?颜色。红色:空,
尺码:32,
),
onTap:(){
设置状态(){
如果(已保存){
savedItems.remove(itemData[index]);
isSaved=假;
}否则{
savedItems.add(itemData[index]);
isSaved=真;
}
});
},
),
),
])),
],
),
)
],
);
}));
}
未来pushToFavorite(构建上下文){
返回Navigator.of(context.push)(MaterialPageRoute(
生成器:(context)=>Favorite(favoriteItem:savedItems));
}
}
timerWidget.dart

import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
import './data.dart';
import './favorite_screen.dart';
import './home_list.dart';

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class Item {
  final String title;
  final String description;
  final String imageURL;
  final int countdown;
  final int id;
  final bool boole;

  Item({
    this.title,
    this.description,
    this.imageURL,
    this.countdown,
    this.id,
    this.boole,
  });
}

class _HomeState extends State<Home> {
  List<Item> savedItems = new List<Item>();
  //List<bool> addFavorite = List<bool>();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Home'),
          actions: [
            IconButton(
                icon: Icon(Icons.favorite_border),
                onPressed: () => pushToFavorite(context))
          ],
        ),
        body: ListView.builder(
            itemCount: itemData.length,
            itemBuilder: (context, index) {
              bool isSaved = savedItems.contains(itemData[index]);
              return Column(
                      crossAxisAlignment: CrossAxisAlignment.center,
                      children: <Widget>[
                        TextObject(
                            itemData[index].title, itemData[index].description),
                        TimerWidget(itemData[index].countdown),
                        Spacer(),
                        Container(
                            padding: const EdgeInsets.only(left: 8.0, top: 8.0),
                            child: Row(
                                mainAxisAlignment: MainAxisAlignment.start,
                                crossAxisAlignment: CrossAxisAlignment.center,
                                children: <Widget>[
                                  Padding(
                                    padding: const EdgeInsets.all(7.0),
                                    child: GestureDetector(
                                      child: Icon(
                                        isSaved
                                            ? Icons.favorite
                                            : Icons.favorite_border,
                                        color: isSaved ? Colors.red : null,
                                        size: 32,
                                      ),
                                      onTap: () {
                                        setState(() {
                                          if (isSaved) {
                                            savedItems.remove(itemData[index]);
                                            isSaved = false;
                                          } else {
                                            savedItems.add(itemData[index]);
                                            isSaved = true;
                                          }
                                        });
                                      },
                                    ),
                                  ),
                                ])),
                      ],
                    ),
                  )
                ],
              );
            }));
  }

  Future pushToFavorite(BuildContext context) {
    return Navigator.of(context).push(MaterialPageRoute(
        builder: (context) => Favorite(favoriteItem: savedItems)));
  }
}
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';

class TextObject extends StatelessWidget {
  final String title;
  final String description;
  const TextObject(this.title, this.description);
  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      crossAxisAlignment: CrossAxisAlignment.start,
      mainAxisSize: MainAxisSize.min,
      children: <Widget>[
        Spacer(),
        //Titre
        Container(
          padding: const EdgeInsets.only(top: 15.0),
          child: FittedBox(
            child: Text(
              title,
              style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
            ),
          ),
        ),
        //Decription
        Container(
          padding: const EdgeInsets.only(left: 10.0, top: 15.0),
          child: Text(
            description,
            style: TextStyle(fontSize: 18, fontWeight: FontWeight.normal),
          ),
        ),
        Spacer(),
      ],
    );
  }
}

class TimerWidget extends StatefulWidget {
  final int date;
  const TimerWidget(
    this.date,
  );

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

class _TimerWidgetState extends State<TimerWidget> {
  bool finished = false;
  @override
  Widget build(BuildContext context) {
    return Container(
        padding: const EdgeInsets.only(top: 10.0),
        child: finished == false ? CountdownTimer(
          daysSymbol: new Text("j "),
          hoursSymbol: new Text(" : "),
          minSymbol: new Text(" : "),
          secSymbol: new Text(""),
          endTime: widget.date,
          textStyle: TextStyle(
            fontSize: 14,
            fontWeight: FontWeight.bold,
            color: Colors.black,
          ),
          onEnd: () {
            setState(() {
              finished = true;
            });
          },
        ) : Text('It is finished'));
  }
}
import'package:cached_network_image/cached_network_image.dart';
进口“包装:颤振/材料.省道”;
导入“包:颤振倒计时定时器/颤振倒计时定时器.dart”;
类TextObject扩展了无状态小部件{
最后的字符串标题;
最终字符串描述;
const TextObject(this.title,this.description);
@凌驾
小部件构建(构建上下文){
返回行(
mainAxisAlignment:mainAxisAlignment.center,
crossAxisAlignment:crossAxisAlignment.start,
mainAxisSize:mainAxisSize.min,
儿童:[
垫片(),
//乳头
容器(
填充:仅限常量边集(顶部:15.0),
孩子:FittedBox(
子:文本(
标题
样式:TextStyle(fontSize:20,fontWeight:fontWeight.bold),
),
),
),
//描述
容器(
填充:仅限常量边集(左:10.0,顶:15.0),
子:文本(
描述
样式:TextStyle(fontSize:18,fontWeight:fontWeight.normal),
),
),
垫片(),
],
);
}
}
类TimerWidget扩展StatefulWidget{
最后整修日期;
恒时桥(
这个日期,
);
@凌驾
_TimerWidgetState createState();
}
类_TimerWidgetState扩展状态{
bool finished=false;
@凌驾
小部件构建(构建上下文){
返回容器(
填充:仅限常量边集(顶部:10.0),
子项:完成==错误?倒计时(
daysSymbol:新文本(“j”),
小时符号:新文本(“ : "),
minSymbol:新文本(“ : "),
secSymbol:新文本(“”),
endTime:widget.date,
textStyle:textStyle(
尺寸:14,
fontWeight:fontWeight.bold,
颜色:颜色,黑色,
),
ONED:(){
设置状态(){
完成=正确;
});
},
):Text('It is finished');
}
}
谢谢