現在我可以一次選擇一個專案,但我想選擇多個專案。我找到了一些用于多選的包,但想在不使用任何包的情況下實作。

int? selectedIndex;
final List<String> _wordName = [
"Engaged in my Life",
"Feel Alive",
"Happy",
"Love my Life",
];
GridView.builder(
scrollDirection: Axis.vertical,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 3,
mainAxisSpacing: 2,
childAspectRatio: (16 / 8),
),
itemCount: _wordName.length,
itemBuilder: (context, index) {
return GestureDetector(
onTap: () {
setState(() {
print("now selected ===>>> $index");
selectedIndex = index;
showButton = true;
});
},
child: Container(
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
color: selectedIndex == index
? Color(0xffDEB988).withOpacity(0.2)
: Color(0xffF4F4F6).withOpacity(0.5),
borderRadius: BorderRadius.circular(5.0),
border: Border.all(
color: selectedIndex == index
? Color(0xffDEB988)
: Colors.transparent,
width: 0.5),
image: const DecorationImage(
image: AssetImage('assets/images/bg2.png'),
fit: BoxFit.cover,
),
),
child: Row(
children: [
Flexible(
child: Center(
child: Text(
_wordName[index].toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: selectedIndex == index
? Color(0xffDEB988)
: Colors.black,
fontWeight: selectedIndex == index
? FontWeight.bold
: FontWeight.normal,
fontFamily: "Poppins",
),
}
uj5u.com熱心網友回復:
您可以在陣列中選擇專案
例子:
List<int> selectedItems = [];
GestureDetector(
onTap: () {
setState(() {
if (selectedItems.contains(index)){
selectedItems.remove(index);
} else {
selectedItems.add(index);
}
}
},
child: Container(
color: selectedItems.contains(index) ? Colors.red : Colors.blue,
child: Something(),
),
),
uj5u.com熱心網友回復:
使用串列存盤選定的索引
final List<int> selectedIndexes = [];
final List<String> _wordName = [
"Engaged in my Life",
"Feel Alive",
"Happy",
"Love my Life",
];
GridView.builder(
scrollDirection: Axis.vertical,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 3,
mainAxisSpacing: 2,
childAspectRatio: (16 / 8),
),
itemCount: _wordName.length,
itemBuilder: (context, index) {
return GestureDetector(
onTap: () {
setState(() {
if(selectedIndexes.contains(index)){
selectedIndexes.remove(index);
} else {
selectedIndexes.remove(index);
}
showButton = true;
});
},
child: Container(
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
color: selectedIndex == index
? Color(0xffDEB988).withOpacity(0.2)
: Color(0xffF4F4F6).withOpacity(0.5),
borderRadius: BorderRadius.circular(5.0),
border: Border.all(
color: selectedIndex == index
? Color(0xffDEB988)
: Colors.transparent,
width: 0.5),
image: const DecorationImage(
image: AssetImage('assets/images/bg2.png'),
fit: BoxFit.cover,
),
),
child: Row(
children: [
Flexible(
child: Center(
child: Text(
_wordName[index].toUpperCase(),
textAlign: TextAlign.center,
style: TextStyle(
color: selectedIndex == index
? Color(0xffDEB988)
: Colors.black,
fontWeight: selectedIndex == index
? FontWeight.bold
: FontWeight.normal,
fontFamily: "Poppins",
),
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/445797.html
上一篇:Hub是否支持MinIO、AWS和GCP的集成?如果是這樣,它是如何作業的?
下一篇:顫振圖示影片
