Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
Flutter 颤振自定义复选框设置动态列表中的状态_Flutter_Dart - Fatal编程技术网

Flutter 颤振自定义复选框设置动态列表中的状态

Flutter 颤振自定义复选框设置动态列表中的状态,flutter,dart,Flutter,Dart,我有一个列表,使用我自己设计的自定义复选框,通过使用setState将变量更改为true或false,单击卡片以指示完成或未完成 如何使“单击一个”复选框只选中该卡 当前,当我单击一个复选框时,也会选中所有复选框 这是我的省道板: 我的代码: import 'package:flutter/material.dart'; final Color darkBlue = Color.fromARGB(255, 18, 32, 47); void main() { runApp(MyApp()

我有一个列表,使用我自己设计的自定义复选框,通过使用setState将变量更改为true或false,单击卡片以指示完成或未完成

如何使“单击一个”复选框只选中该卡

当前,当我单击一个复选框时,也会选中所有复选框

这是我的省道板:

我的代码:

import 'package:flutter/material.dart';

final Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: TestPageTwo(),
        ),
      ),
    );
  }
}

class TestPageTwo extends StatefulWidget {
  @override
  _TestPageTwoState createState() => _TestPageTwoState();
}

class _TestPageTwoState extends State<TestPageTwo> {
  bool isComplete = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Task List'),
        ),
        body: ListView.builder(
          padding: EdgeInsets.all(15.0),
          shrinkWrap: true,
          itemCount: taskList.length,
          itemBuilder: (context, index) =>
              _buildTaskCard(index, taskList[index]),
        ));
  }

  Widget _buildTaskCard(int itemIndex, TaskModel task) {
    return Card(
      margin: EdgeInsets.symmetric(vertical: 5.0),
      shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.all(Radius.circular(10.0))),
      elevation: 5.0,
      child: InkWell(
        splashColor: Colors.blue.withAlpha(30),
        onTap: () {},
        child: Container(
          width: double.infinity,
          height: 70,
          child: Column(
            children: [
              ListTile(
                leading: GestureDetector(
                  onTap: () {
                    setState(() {
                      isComplete = !isComplete;
                    });
                    print(isComplete);
                  },
                  child: isComplete
                      ? Icon(
                          Icons.check_circle_outline_outlined,
                          color: Colors.blue,
                          size: 40,
                        )
                      : Icon(
                          Icons.radio_button_unchecked,
                          color: Colors.grey,
                          size: 40,
                        ),
                ),
                title: Text(
                  task.taskTitle,
                  style: TextStyle(fontSize: 13.0),
                  maxLines: 1,
                  overflow: TextOverflow.ellipsis,
                ),
                subtitle: Text(
                  task.taskCategory,
                  style: TextStyle(fontSize: 10.0),
                ),
                dense: true,
              ),
            ],
          ),
        ),
      ),
    );
  }
}

class TaskModel {
  final String taskId,
      taskStatus,
      taskTitle,
      taskCategory;

  TaskModel(
      {this.taskId,
      this.taskStatus,
      this.taskTitle,
      this.taskCategory});
}

List<TaskModel> taskList = [
  TaskModel(
      taskId: 'task00001',
      taskStatus: 'Incomplete',
      taskTitle: 'Task 00001',
      taskCategory: 'A0001'),
  TaskModel(
      taskId: 'task00002',
      taskStatus: 'Completed',
      taskTitle: 'Task 00002',
      taskCategory: 'A0002'),
  TaskModel(
      taskId: 'task00003',
      taskStatus: 'Incomplete',
      taskTitle: 'Task 00003',
      taskCategory: 'A0003',),
  TaskModel(
      taskId: 'task00004',
      taskStatus: 'Incomplete',
      taskTitle: 'Task 00004',
      taskCategory: 'A0004',),
];

导入“包装:颤振/材料.省道”;
最终颜色深蓝色=颜色。来自argb(255,18,32,47);
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主题:ThemeData.dark().copyWith(脚手架背景颜色:深蓝色),
debugShowCheckedModeBanner:false,
家:脚手架(
正文:中(
子项:TestPageTwo(),
),
),
);
}
}
类TestPageTwo扩展了StatefulWidget{
@凌驾
_TestPageTwoState createState();
}
类_TestPageTwoState扩展状态{
bool isComplete=false;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“任务列表”),
),
正文:ListView.builder(
填充:所有边缘设置(15.0),
收缩膜:对,
itemCount:taskList.length,
itemBuilder:(上下文,索引)=>
_buildTaskCard(索引,任务列表[索引]),
));
}
Widget\u buildTaskCard(int itemIndex,TaskModel任务){
回程卡(
边缘:边缘组。对称(垂直:5.0),
形状:圆形矩形边框(
borderRadius:borderRadius.all(半径.圆形(10.0)),
标高:5.0,
孩子:InkWell(
飞溅颜色:颜色。蓝色。带有alpha(30),
onTap:(){},
子:容器(
宽度:double.infinity,
身高:70,
子:列(
儿童:[
列表砖(
引导:手势检测器(
onTap:(){
设置状态(){
isComplete=!isComplete;
});
打印(已完成);
},
孩子:我完成了
?图标(
图标。检查\u圆圈\u轮廓\u轮廓,
颜色:颜色,蓝色,
尺码:40,
)
:图标(
图标。单选按钮未选中,
颜色:颜色。灰色,
尺码:40,
),
),
标题:正文(
task.taskTitle,
样式:TextStyle(字体大小:13.0),
maxLines:1,
溢出:TextOverflow.省略号,
),
字幕:文本(
task.taskCategory,
样式:TextStyle(fontSize:10.0),
),
是的,
),
],
),
),
),
);
}
}
类任务模型{
最后一个字符串taskId,
任务状态,
任务名称,
任务类别;
任务模型(
{this.taskId,
这是一种状态,
这个题目,
这是一个任务类别});
}
列表任务列表=[
任务模型(
taskId:'task00001',
taskStatus:“未完成”,
任务标题:“任务00001”,
任务类别:“A0001”),
任务模型(
taskId:'task00002',
任务状态:“已完成”,
任务标题:“任务00002”,
任务类别:“A0002”),
任务模型(
taskId:'task00003',
taskStatus:“未完成”,
任务标题:“任务00003”,
任务类别:“A0003”,),
任务模型(
taskId:'task00004',
taskStatus:“未完成”,
任务标题:“任务00004”,
任务类别:“A0004”,),
];
试试这个

import 'package:flutter/material.dart';

final Color darkBlue = Color.fromARGB(255, 18, 32, 47);

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData.dark().copyWith(scaffoldBackgroundColor: darkBlue),
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: Center(
          child: TestPageTwo(),
        ),
      ),
    );
  }
}

class TestPageTwo extends StatefulWidget {
  @override
  _TestPageTwoState createState() => _TestPageTwoState();
}

class _TestPageTwoState extends State<TestPageTwo> {
  bool isComplete = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text('Task List'),
        ),
        body: ListView.builder(
          padding: EdgeInsets.all(15.0),
          shrinkWrap: true,
          itemCount: taskList.length,
          itemBuilder: (context, index) =>
              _buildTaskCard(index, taskList[index]),
        ));
  }

  Widget _buildTaskCard(int itemIndex, TaskModel task) {
    return Card(
      margin: EdgeInsets.symmetric(vertical: 5.0),
      shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.all(Radius.circular(10.0))),
      elevation: 5.0,
      child: InkWell(
        splashColor: Colors.blue.withAlpha(30),
        onTap: () {},
        child: Container(
          width: double.infinity,
          height: 70,
          child: Column(
            children: [
              ListTile(
                leading: GestureDetector(
                  onTap: () {
                    setState(() {
                      task.taskStatus = !task.taskStatus;
                    });
                    print(isComplete);
                  },
                  child: task.taskStatus
                      ? Icon(
                          Icons.check_circle_outline_outlined,
                          color: Colors.blue,
                          size: 40,
                        )
                      : Icon(
                          Icons.radio_button_unchecked,
                          color: Colors.grey,
                          size: 40,
                        ),
                ),
                title: Text(
                  task.taskTitle,
                  style: TextStyle(fontSize: 13.0),
                  maxLines: 1,
                  overflow: TextOverflow.ellipsis,
                ),
                subtitle: Text(
                  task.taskCategory,
                  style: TextStyle(fontSize: 10.0),
                ),
                dense: true,
              ),
            ],
          ),
        ),
      ),
    );
  }
}

class TaskModel {
  final String taskId,
      taskTitle,
      taskCategory;
  bool taskStatus = false;


  TaskModel(
      {this.taskId,
      this.taskStatus,
      this.taskTitle,
      this.taskCategory});
}

List<TaskModel> taskList = [
  TaskModel(
      taskId: 'task00001',
      taskStatus: false,
      taskTitle: 'Task 00001',
      taskCategory: 'A0001'),
  TaskModel(
      taskId: 'task00002',
      taskStatus: true,
      taskTitle: 'Task 00002',
      taskCategory: 'A0002'),
  TaskModel(
      taskId: 'task00003',
      taskStatus: false,
      taskTitle: 'Task 00003',
      taskCategory: 'A0003',),
  TaskModel(
      taskId: 'task00004',
      taskStatus: false,
      taskTitle: 'Task 00004',
      taskCategory: 'A0004',),
];
导入“包装:颤振/材料.省道”;
最终颜色深蓝色=颜色。来自argb(255,18,32,47);
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主题:ThemeData.dark().copyWith(脚手架背景颜色:深蓝色),
debugShowCheckedModeBanner:false,
家:脚手架(
正文:中(
子项:TestPageTwo(),
),
),
);
}
}
类TestPageTwo扩展了StatefulWidget{
@凌驾
_TestPageTwoState createState();
}
类_TestPageTwoState扩展状态{
bool isComplete=false;
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“任务列表”),
),
正文:ListView.builder(
填充:所有边缘设置(15.0),
收缩膜:对,
itemCount:taskList.length,
itemBuilder:(上下文,索引)=>
_buildTaskCard(索引,任务列表[索引]),
));
}
Widget\u buildTaskCard(int itemIndex,TaskModel任务){
回程卡(
边缘:边缘组。对称(垂直:5.0),
形状:圆形矩形边框(
borderRadius:borderRadius.all(半径.圆形(10.0)),
标高:5.0,
孩子:InkWell(
飞溅颜色:颜色。蓝色。带有alpha(30),
onTap:(){},
子:容器(
宽度:double.infinity,
身高:70,
子:列(
儿童:[
列表砖(
引导:手势检测器(
onTap:(){
设置状态(){
task.taskStatus=!task.taskStatus;
});
打印(已完成);
},
子项:task.taskStatus
?图标(
图标。检查\u圆圈\u轮廓\u轮廓,
颜色:颜色,蓝色,
尺码:40,
)
:图标(