List 带布尔的倒数计时器中的ONED
当包flift\u countdown\u timer:1.5.0中的CountdownTimer()完成时,我尝试将布尔设置为true。但是它改变了我的列表视图中所有的倒计时。我想我必须使用列表,但我不知道如何使用它。我是初学者,请宽容一点。这是我的代码: main.dartList 带布尔的倒数计时器中的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';
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');
}
}
谢谢