Flutter | Тип аргумента «Объект?» не может быть присвоен типу параметра «int»

#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. я благодарен вам.. за все типы синтаксического анализа, которые вы мне здесь рассказали.. это мне очень помогло.