Я хотел бы сделать каждое слово текста кликабельным. Затем при нажатии на определенное слово его цвет текста должен измениться.
Создание каждого кликабельного слова прекрасно работает Тем не менее, цвет текста не меняется, когда я нажимаю на слово. Вот как далеко я зашёл:
import 'package:flutter/material.dart';
import 'package:flutter/gestures.dart';
class MakeStringClickable extends StatefulWidget{
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _MakeStringClickableState();
}
}
class _MakeStringClickableState extends State<MakeStringClickable>{
String textToSplit = 'I would like to make each word clickable. On click of a particular word it's color should change.';
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
alignment: Alignment.center,
child: _buildTextSpanWithSplittedText(textToSplit, context)
),
);
}
RichText _buildTextSpanWithSplittedText(String textToSplit, BuildContext context) {
bool isPressed = false;
final splittedText = textToSplit.split(" ");
final spans = new List<TextSpan>();
for(int i = 0; i <= splittedText.length - 1; i++ ){
spans.add(TextSpan(
text: splittedText[i].toString() + " ",
style: TextStyle(color: isPressed ? Colors.black : Colors.red),
recognizer: new TapGestureRecognizer()..onTap = () {
setState(() {isPressed = !isPressed;});
}
));
}
return RichText(text: TextSpan(children: spans));
}
}
Я ожидаю, что цвет любого слова изменится на черный, когда я нажму на него, но каким-то образом изменение стиля не будет работать должным образом. Я надеюсь, что кто-нибудь сможет мне помочь.