#flutter #function #dart #parameters #radio-button
Вопрос:
Я получаю ошибку в своем коде . Поскольку я передаю индекс значения int в функцию. Вот мой код, который может помочь вам решить мой запрос.
import 'package:flutter/material.dart';
class Gratitude extends StatefulWidget {
final int radioGroupValue;
const Gratitude({required Key key, required this.radioGroupValue}) : super(key: key);
@override
_GratitudeState createState() => _GratitudeState();
}
class _GratitudeState extends State<Gratitude> {
final List<String> _gratitudeList = [];
late String _selectedGratitude;
late int _radioGroupValue;
void _radioOnChanged(int index) {
setState(() {
_radioGroupValue = index;
_selectedGratitude = _gratitudeList[index];
print('_selectedRadioValue $_selectedGratitude');
});
}
@override
void initState() {
super.initState();
_gratitudeList..add('Family')..add('Friends')..add('Coffee');
_radioGroupValue = widget.radioGroupValue;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Gratitude'),
actions: <Widget>[
IconButton(
icon: const Icon(Icons.check),
onPressed: () => Navigator.pop(context, _selectedGratitude),
),
],
),
body: SafeArea(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
children: <Widget>[
Radio(
value: 0,
groupValue: _radioGroupValue,
onChanged: (index) => _radioOnChanged(index),
),
const Text('Family'),
Radio(
value: 1,
groupValue: _radioGroupValue,
onChanged: (index) => _radioOnChanged(index),
),
const Text('Friends'),
Radio(
value: 2,
groupValue: _radioGroupValue,
onChanged: (index) => _radioOnChanged(index),
),
const Text('Coffee'),
],
),
),
),
);
}
}
Ошибка :Тип аргумента «Объект?» не может быть присвоен типу параметра «int».
указывая на все 3 строки со следующим кодом.
onChanged: (index) => _radioOnChanged(index)
Ответ №1:
Попробуйте это: onChanged: (index) => _radioOnChanged(index as int)
для того, чтобы сказать dart, чтобы привести объект в качестве int.
Комментарии:
1. этот ответ помог мне в моем проекте, спасибо, что поделились этим. Можем ли мы использовать то же самое для преобразования любого типа значения в строку ввода и т. Д.
2. нет, только те значения, которые уже иного типа (например, динамические или список в int или list<String>), если вы хотите превратить int в строку, вы можете позвонить инт.toString() и если вы хотите превратить строку, скажем
'5'
в int, называть int.синтаксический анализ(строка)3. я благодарен вам.. за все типы синтаксического анализа, которые вы мне здесь рассказали.. это мне очень помогло.