我怎样才能让列表中的每个元素都有一个孤立的行为?
how can I have an isolated behavior per element in a list?
我只想让我点击的项目改变颜色,但所有项目都继承了新颜色,
我怎样才能让列表中的每个元素都有一个独立的行为?
import 'package:flutter/material.dart';
class myClass extends StatefulWidget {
@override
State<myClass> createState() => _myClassState();
}
class _myClassState extends State<myClass> {
Color color =Colors.green ;
List ListOfProfils = ["a","b","c"] ;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ListView.builder(
itemBuilder: (context, index) => Container(
key: Key(ListOfProfils[index]),
height: 100,
width: 100,
color : color,
margin: EdgeInsets.all(10),
child: TextButton(
onPressed: () => setState(() {
print(color);
color =Colors.red ;
print(color);
}), child: Text("CLICK")),
),
itemCount: 3,
),
);
;
}
}
将您的代码更改为此。
class _myClassState extends State<myClass> {
Color color = Colors.green;
List ListOfProfils = ["a", "b", "c"];
int selectedIndex = -1;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ListView.builder(
itemBuilder: (context, index) => Container(
key: Key(ListOfProfils[index]),
height: 100,
width: 100,
color: selectedIndex == index ? Colors.red : color,
margin: EdgeInsets.all(10),
child: TextButton(
onPressed: () => setState(() {
selectedIndex = index;
}),
child: Text("CLICK")),
),
itemCount: 3,
),
);
}
}
我只想让我点击的项目改变颜色,但所有项目都继承了新颜色,
我怎样才能让列表中的每个元素都有一个独立的行为?
import 'package:flutter/material.dart';
class myClass extends StatefulWidget {
@override
State<myClass> createState() => _myClassState();
}
class _myClassState extends State<myClass> {
Color color =Colors.green ;
List ListOfProfils = ["a","b","c"] ;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ListView.builder(
itemBuilder: (context, index) => Container(
key: Key(ListOfProfils[index]),
height: 100,
width: 100,
color : color,
margin: EdgeInsets.all(10),
child: TextButton(
onPressed: () => setState(() {
print(color);
color =Colors.red ;
print(color);
}), child: Text("CLICK")),
),
itemCount: 3,
),
);
;
}
}
将您的代码更改为此。
class _myClassState extends State<myClass> {
Color color = Colors.green;
List ListOfProfils = ["a", "b", "c"];
int selectedIndex = -1;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: ListView.builder(
itemBuilder: (context, index) => Container(
key: Key(ListOfProfils[index]),
height: 100,
width: 100,
color: selectedIndex == index ? Colors.red : color,
margin: EdgeInsets.all(10),
child: TextButton(
onPressed: () => setState(() {
selectedIndex = index;
}),
child: Text("CLICK")),
),
itemCount: 3,
),
);
}
}