Flutter选择题单选插件mcq_radio的使用
Flutter选择题单选插件mcq_radio的使用
MCQRadio
MCQRadio
是一个 Flutter 包,它提供了一个可自定义的单选按钮组件,用于多选题(MCQs),基于 Flutter 的 Radio
组件。它允许开发者创建一个带有字母中心的单选按钮,并可以自定义按钮及其文本的颜色、大小和样式。
特性
- 创建一个带有字母中心的单选按钮
- 自定义按钮及其文本的颜色、大小和样式
- 支持深色和浅色主题
- 与 Flutter 的 Material Design 无缝集成
开始使用
要使用 MCQRadio
,首先需要将其添加到你的依赖项中:
在 pubspec.yaml
文件中添加以下内容:
dependencies:
mcq_radio: ^1.0.0
然后在终端中运行 flutter pub get
来下载并安装包。
在 Dart 代码中导入包:
import 'package:mcq_radio/mcq_radio.dart';
使用方法
使用 MCQRadio
组件来创建单选按钮。以下是一个示例:
const one = "ক";
const two = "খ";
const three = "গ";
const four = "ঘ";
const five = "ঙ";
const unanswered = "";
enum OptionTitles { one, two, three, four, five, unanswered }
OptionTitles _optionTitle = OptionTitles.unanswered;
MCQRadio<OptionTitles>(
fillColor: MaterialStateColor.resolveWith(
(states) => Colors.black), // 单选按钮的颜色
value: OptionTitles.one, // 单选按钮的值 (枚举) 例如 ক, খ, গ, ঘ, ঙ 等
groupValue: _optionTitle, // 当前选中的单选按钮的值
mcqOptionAlphabetStyle: const TextStyle(
fontSize: 20,
fontFamily: "SolaimanLipi",
color: Colors.black, // 单选按钮字母的颜色
), // 单选按钮文本的样式
circleRadius: 20, // 单选按钮的半径
mcqOptionAlphabet: one,
onChanged: (OptionTitles? value) {
setState(() {
_optionTitle = value!;
});
},
);
示例代码
以下是完整的示例代码:
import 'package:flutter/material.dart';
import 'package:mcq_radio/mcq_radio.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
static const String _title = 'MCQ Radio buttons Example';
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: _title,
debugShowCheckedModeBanner: false,
theme: ThemeData(
primaryColor: Colors.black,
colorScheme: ColorScheme.fromSwatch().copyWith(secondary: Colors.black),
),
home: Scaffold(
appBar: AppBar(
title: const Text(_title),
backgroundColor: Colors.amber[900],
),
body: const Center(
child: MyStatefulWidget(),
),
),
);
}
}
const one = "ক";
const two = "খ";
const three = "গ";
const four = "ঘ";
const five = "ঙ";
const unanswered = "";
enum OptionTitles { one, two, three, four, five, unanswered }
class MyStatefulWidget extends StatefulWidget {
const MyStatefulWidget({Key? key}) : super(key: key);
[@override](/user/override)
State<MyStatefulWidget> createState() => _MyStatefulWidgetState();
}
class _MyStatefulWidgetState extends State<MyStatefulWidget> {
OptionTitles _optionTitle = OptionTitles.unanswered;
[@override](/user/override)
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
const Padding(
padding: EdgeInsets.all(8.0),
child: Text(
"1. Which one is the capital of Bangladesh?",
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.bold,
fontFamily: "SolaimanLipi",
),
),
),
MCQRadio<OptionTitles>(
fillColor: MaterialStateColor.resolveWith(
(states) => Colors.black), // 单选按钮的颜色
value: OptionTitles.one, // 单选按钮的值 (枚举) 例如 ক, খ, গ, ঘ, ঙ 等
groupValue: _optionTitle, // 当前选中的单选按钮的值
mcqOptionAlphabetStyle: const TextStyle(
fontSize: 20,
fontFamily: "SolaimanLipi",
color: Colors.black, // 单选按钮字母的颜色
), // 单选按钮文本的样式
circleRadius: 20, // 单选按钮的半径
mcqOptionAlphabet: one,
onChanged: (OptionTitles? value) {
setState(() {
_optionTitle = value!;
});
},
),
MCQRadio<OptionTitles>(
fillColor: MaterialStateColor.resolveWith((states) => Colors.black),
value: OptionTitles.two,
groupValue: _optionTitle,
mcqOptionAlphabet: two,
onChanged: (OptionTitles? value) {
setState(() {
_optionTitle = value!;
});
},
),
MCQRadio<OptionTitles>(
fillColor: MaterialStateColor.resolveWith((states) => Colors.black),
value: OptionTitles.three,
groupValue: _optionTitle,
mcqOptionAlphabet: three,
onChanged: (OptionTitles? value) {
setState(() {
_optionTitle = value!;
});
},
),
MCQRadio<OptionTitles>(
fillColor: MaterialStateColor.resolveWith((states) => Colors.black),
value: OptionTitles.four,
groupValue: _optionTitle,
mcqOptionAlphabet: four,
onChanged: (OptionTitles? value) {
setState(() {
_optionTitle = value!;
});
},
),
MCQRadio<OptionTitles>(
fillColor: MaterialStateColor.resolveWith((states) => Colors.black),
value: OptionTitles.five,
groupValue: _optionTitle,
mcqOptionAlphabet: five,
onChanged: (OptionTitles? value) {
print(value);
setState(() {
_optionTitle = value!;
});
},
),
],
);
}
}
更多关于Flutter选择题单选插件mcq_radio的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter选择题单选插件mcq_radio的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
mcq_radio
是一个用于在 Flutter 应用中创建单选题(Multiple Choice Questions, MCQ)的插件。它允许开发者轻松地在应用中添加单选题,并获取用户的选择。以下是如何使用 mcq_radio
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 mcq_radio
插件的依赖:
dependencies:
flutter:
sdk: flutter
mcq_radio: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 mcq_radio
插件:
import 'package:mcq_radio/mcq_radio.dart';
3. 创建单选题
使用 McqRadio
组件来创建单选题。你可以通过 options
属性来定义选项,并通过 onChanged
回调来获取用户的选择。
class MyMcqRadio extends StatefulWidget {
@override
_MyMcqRadioState createState() => _MyMcqRadioState();
}
class _MyMcqRadioState extends State<MyMcqRadio> {
String? selectedOption;
final List<String> options = [
'Option 1',
'Option 2',
'Option 3',
'Option 4',
];
@override
Widget build(BuildContext context) {
return Column(
children: [
McqRadio(
options: options,
selectedOption: selectedOption,
onChanged: (String? value) {
setState(() {
selectedOption = value;
});
},
),
SizedBox(height: 20),
Text('Selected Option: ${selectedOption ?? 'None'}'),
],
);
}
}
4. 使用 McqRadio
组件
现在你可以在你的应用中使用 MyMcqRadio
组件:
void main() {
runApp(MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('MCQ Radio Example'),
),
body: Center(
child: MyMcqRadio(),
),
),
));
}
5. 自定义样式
mcq_radio
插件允许你自定义选项的样式,例如按钮的颜色、文本样式等。你可以通过 McqRadio
的其他属性来实现这些自定义。
McqRadio(
options: options,
selectedOption: selectedOption,
onChanged: (String? value) {
setState(() {
selectedOption = value;
});
},
activeColor: Colors.blue,
inactiveColor: Colors.grey,
textStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
),
6. 处理用户选择
用户选择某个选项后,onChanged
回调会被触发,你可以在回调中处理用户的选择逻辑。
onChanged: (String? value) {
setState(() {
selectedOption = value;
});
print('User selected: $value');
},