Делаем приложение. Тесты с ответами. Итак исходные данные я получаю по Json (локально) Разбираю их. Вывожу их с помощью ListView.builder. Проблема заключается в том что при нажатии на радиокнопку она не загорается. Какая то проблема при переключении, т.е. не загорается радиокнопка выбранного ответа. Что то мне говорит проблема где то в этих строчках (onChanged:...)
Выкладываю код:
Код:
class MyTickets extends StatefulWidget { @override State<StatefulWidget> createState() { return MyTicketsState(); } } class MyTicketsState extends State<MyTickets> { final Future<List<Ticket>> waitingData = () async {}(); Future<List<Ticket>> getTicketsFromJson(BuildContext context) async { String jsonString = await DefaultAssetBundle.of(context) .loadString('json/question_set.json'); List<dynamic> questionnaires = (jsonDecode(jsonString) as Map)['questionnaires'] as List; return questionnaires .map((dynamic rawTicket) => Ticket.fromJson(rawTicket)) .toList(growable: false); } @override Widget build(BuildContext context) { return Scaffold( body: SafeArea( child: FutureBuilderWrapper<List<Ticket>>( future: getTicketsFromJson(context), onSuccess: (BuildContext context, List<Ticket> items) { return ListView.builder( shrinkWrap: true, itemCount: items?.length ?? 0, itemBuilder: (context, i) { Ticket ticket = items[i]; return Column( children: <Widget>[ SafeArea(child: Text(ticket.question)), Container( child: Image.asset(ticket.picture), ), Container( child: (ListView.builder( shrinkWrap: true, itemCount: ticket.answers.length, itemBuilder: (context, i) { return Column( children: <Widget>[ Align( alignment: Alignment.centerLeft, child: RadioListTile( groupValue: ticket.questionNumber, value: ticket.answers[i], onChanged: (newVal) => setState(() { ticket.questionNumber = newVal; //print(index); //print(ticket.answer); }), activeColor: Colors.blue, title: Text(ticket.answers[i]), )) ], ); }, )), ) //Text(ticket.answers[i]) ], ); }, ); }, ))); } } void main() { runApp(MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( appBar: AppBar( title: (Text('Билеты')), ), body: MyTickets()), //home: Question(); )); }