在 Flutter 上仅更新列表视图构建器上的选定位置文本颜色
Update only Selected Position text Color On List View builder on Flutter
您好,我只想更新所选项目的列表视图生成器中的文本颜色。我们怎样才能做到这一点??
我只想更新选定的文本颜色,之前的项目颜色将为黑色。
这是我的代码:
我的第一个小部件是 statefulWidget
Expanded(
flex: 6,
child: ListView.builder(
itemCount: languageValue.length,
shrinkWrap: true,
scrollDirection: Axis.vertical,
physics: const BouncingScrollPhysics(),
itemBuilder: (ctx, index) {
LanguageCode lang = languageValue[index];
return _LanguageItemSelection(
languageName: lang.value,
isSelected: index,
onLanguageSelect: () {
setState(() {
_langValue = lang.value!;
});
debugPrint('Language Value => ${lang.code}');
},
);
},
),
),
我的第二语言SelectedItem :
class _LanguageItemSelection extends StatelessWidget {
_LanguageItemSelection({
Key? key,
this.languageName,
this.onLanguageSelect,
this.isSelected,
}) : super(key: key);
String? languageName;
VoidCallback? onLanguageSelect;
int? isSelected;
int _selectedIndex = 0;
@override
Widget build(BuildContext context) {
debugPrint('index => ${isSelected}');
return Column(
children: [
const SizedBox(
height: 5,
),
InkWell(
onTap: onLanguageSelect,
child: Text(
languageName!,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 20,
color: isSelected == _selectedIndex ? Colors.blue : Colors.black,
),
),
),
const SizedBox(
height: 5,
),
const Divider(
color: Colors.grey,
thickness: 0.8,
),
],
);
}
}
找到了解决方案
我在 statefulwidget 及其工作中创建了函数
_LanguageItemSelection(String name, int index) {
return InkWell(
onTap: () {
setState(() {
selectedLanguage = index;
_langValue = name;
});
},
child: Column(
children: [
const SizedBox(
height: 5,
),
Text(
name,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 20,
color: selectedLanguage == index ? Colors.blue : Colors.black,
),
),
const SizedBox(
height: 5,
),
const Divider(
color: Colors.grey,
thickness: 0.8,
),
],
),
);
}
}
您好,我只想更新所选项目的列表视图生成器中的文本颜色。我们怎样才能做到这一点??
我只想更新选定的文本颜色,之前的项目颜色将为黑色。
这是我的代码:
我的第一个小部件是 statefulWidget
Expanded(
flex: 6,
child: ListView.builder(
itemCount: languageValue.length,
shrinkWrap: true,
scrollDirection: Axis.vertical,
physics: const BouncingScrollPhysics(),
itemBuilder: (ctx, index) {
LanguageCode lang = languageValue[index];
return _LanguageItemSelection(
languageName: lang.value,
isSelected: index,
onLanguageSelect: () {
setState(() {
_langValue = lang.value!;
});
debugPrint('Language Value => ${lang.code}');
},
);
},
),
),
我的第二语言SelectedItem :
class _LanguageItemSelection extends StatelessWidget {
_LanguageItemSelection({
Key? key,
this.languageName,
this.onLanguageSelect,
this.isSelected,
}) : super(key: key);
String? languageName;
VoidCallback? onLanguageSelect;
int? isSelected;
int _selectedIndex = 0;
@override
Widget build(BuildContext context) {
debugPrint('index => ${isSelected}');
return Column(
children: [
const SizedBox(
height: 5,
),
InkWell(
onTap: onLanguageSelect,
child: Text(
languageName!,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 20,
color: isSelected == _selectedIndex ? Colors.blue : Colors.black,
),
),
),
const SizedBox(
height: 5,
),
const Divider(
color: Colors.grey,
thickness: 0.8,
),
],
);
}
}
我在 statefulwidget 及其工作中创建了函数
_LanguageItemSelection(String name, int index) {
return InkWell(
onTap: () {
setState(() {
selectedLanguage = index;
_langValue = name;
});
},
child: Column(
children: [
const SizedBox(
height: 5,
),
Text(
name,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 20,
color: selectedLanguage == index ? Colors.blue : Colors.black,
),
),
const SizedBox(
height: 5,
),
const Divider(
color: Colors.grey,
thickness: 0.8,
),
],
),
);
}
}