【发布时间】:2020-10-08 12:43:38
【问题描述】:
您好,我是 Flutter 的初学者。我的应用程序中有一个问题,我想为生成的每个列表添加单独的计数器。到目前为止,我的代码将运行该应用程序,因此如果我单击列表,它也会增加以下列表中的数字。我不希望我希望它单独增加。有人可以帮忙吗。将不胜感激。
import 'package:flutter/material.dart';
void main() {
//what you want to start whenever you start the function
runApp(MyApp());
}
class Post {
String body;
int likes = 0;
bool hasbeenLiked = true;
void likePost() {
this.likes++;
}
}
List<String> todoList = [];
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Habit Tracker',
theme: ThemeData(
primarySwatch: Colors.green,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final controller = TextEditingController();
var post = Post();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Habbit Tracker")),
body: Column(children: <Widget>[
Expanded(
child: Container(
child: ListView.separated(
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text('${todoList[index]}'),
trailing: Icon(Icons.arrow_circle_up_sharp),
subtitle: Text(post.likes.toString()),
onTap: () {
setState(() {
post.likePost();
});
},
onLongPress: () {
setState(() {
todoList.removeAt(index);
});
},
);
},
separatorBuilder: (BuildContext context, int index) => Divider(),
itemCount: todoList.length,
),
),
),
TextField(
controller: this.controller,
decoration: InputDecoration(
prefixIcon: Icon(Icons.brightness_1),
hintText: "Enter your habit",
suffixIcon: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () {
setState(() {
todoList.add(controller.text);
});
})))
]),
);
}
}
【问题讨论】: