import 'package:flutter/material.dart';
class TaskTile extends StatefulWidget {
@override
State<TaskTile> createState() => _TaskTileState();
}
class _TaskTileState extends State<TaskTile> {
bool isChecked = false;
// void checkboxCallback(bool checkboxState) {
// setState(() {
// isChecked = checkboxState;
// });
// }
@override
Widget build(BuildContext context) {
return ListTile(
title: Text(
'This is a task.',
style: TextStyle(
decoration: isChecked ? TextDecoration.lineThrough : null),
),
trailing: TaskCheckbox(
checkboxState: isChecked,
toggleCheckboxState: (bool checkboxState) {
setState(() {
isChecked = checkboxState;
});
}),
);
}
}
class TaskCheckbox extends StatelessWidget {
final bool checkboxState;
final Function toggleCheckboxState;
const TaskCheckbox(
{required this.checkboxState, required this.toggleCheckboxState});
@override
Widget build(BuildContext context) {
return Checkbox(
activeColor: Colors.lightBlueAccent,
value: checkboxState,
onChanged: toggleCheckboxState(),
);
}
}根据全球状态的概念。我试图将bool isChecked值用于复选框和复选框标题,即文本。但是我在我的android模拟器中得到了蓝色的空白。我是新手,不知道到底出了什么问题。有人能帮我吗?
发布于 2022-11-29 10:50:49
“稍后编辑以添加解释,时间不多了”
此更新代码应能工作:
class TaskTile extends StatefulWidget {
const TaskTile({super.key});
@override
State<TaskTile> createState() => _TaskTileState();
}
class _TaskTileState extends State<TaskTile> {
bool isChecked = false;
// void checkboxCallback(bool checkboxState) {
// setState(() {
// isChecked = checkboxState;
// });
// }
@override
Widget build(BuildContext context) {
return ListTile(
title: Text(
'This is a task.',
style: TextStyle(
decoration: isChecked ? TextDecoration.lineThrough : null),
),
trailing: TaskCheckbox(
checkboxState: isChecked,
toggleCheckboxState: (bool? checkboxState) {
setState(() {
isChecked = checkboxState!;
});
},
),
);
}
}
class TaskCheckbox extends StatelessWidget {
final bool checkboxState;
final Function(bool?) toggleCheckboxState;
const TaskCheckbox(
{super.key,
required this.checkboxState,
required this.toggleCheckboxState});
@override
Widget build(BuildContext context) {
return Checkbox(
activeColor: Colors.lightBlueAccent,
value: checkboxState,
onChanged: toggleCheckboxState,
);
}
}https://stackoverflow.com/questions/74611352
复制相似问题