Вы можете скопировать и вставить полный код ниже
Вы можете объявить List<bool>
и изменить значок leading
на boolList[index]
фрагмент кода
List<bool> boolList = [true, true, true, true, true, true, true];
...
Card(
child: GestureDetector(
child: ListTile(
leading: boolList[index]
? Icon(Icons.check_box_outline_blank)
: Icon(Icons.place),
title: Text('My Item'),
onTap: () {
boolList[index] = !boolList[index];
setState(() {});
},
),
),
)
рабочая демонстрация
полный код
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(
home: HomePage(),
));
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
List<bool> boolList = [true, true, true, true, true, true, true];
Widget _getListItemTile(BuildContext context, int index) {
return Card(
child: GestureDetector(
child: ListTile(
leading: boolList[index]
? Icon(Icons.check_box_outline_blank)
: Icon(Icons.place),
title: Text('My Item'),
onTap: () {
boolList[index] = !boolList[index];
setState(() {});
},
),
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My Test App'),
centerTitle: true,
),
body: ListView.builder(
itemCount: boolList.length,
itemBuilder: _getListItemTile,
),
);
}
}