Flutter牙齿选择器插件teeth_selector的使用
Flutter牙齿选择器插件teeth_selector的使用
标题
Flutter牙齿选择器插件teeth_selector的使用
内容
一个简单的的牙齿图表,用户可以像复选框一样选择/取消选择牙齿。它还可以显示临时牙和/或恒牙。它也可以选择一个或多个牙齿。
开始使用
安装该包使用 flutter pub add teeth_selector
导入它:
import 'package:teeth_selector/teeth_selector.dart';
使用方法
TeethSelector(
// 必需:当用户选择/取消选择牙齿时执行的回调
onChange: (selected) => print(selected),
// 显示恒牙
// 默认:true
showPermanent: true,
// 显示乳牙
// 默认:true
showPrimary: true,
// 每个牙齿的注释
// 提供一个函数,当给定ISO注释字符串时,
// 将转换为其他您可能想要的注释
// 默认:null(ISO注释在提示上
notation: (isoString) => "ISO: $isoString",
// 用户是否可以选择多个牙齿
// 默认:false
multiSelect: true,
// 被选中的牙齿的颜色
// 默认:Colors.blue
selectedColor: Colors.yellow,
// 默认未被选中的牙齿的颜色
// 默认:Colors.white
unselectedColor: Colors.red,
// 提示的颜色
// 默认:Colors.black
tooltipColor: Colors.purple,
// 初始被选中的的牙齿
// 您必须提供一个ISO注释列表
// 默认:[]
initiallySelected: ["11", "47", "48"],
// 颜色化某些牙齿
// 默认:{}
colorize: {
"11": Colors.purple,
},
// 颜色化某些牙齿的描边
// 默认:{}
strokeColorized: {
"24": Colors.grey.withOpacity(0.5),
},
// 描边颜色
// 默认:Colors.transparent
defaultStrokeColor: Colors.red,
// 特定牙齿的描边宽度
// 默认:{}
strokeWidth: {
"11": 10.0,
"24": 10.0,
},
// 所有其他牙齿的默认描边宽度
// 默认:1.0
defaultStrokeWidth: 10.0,
// 左侧嘴部的文本
// 默认:"Left"
leftString: "Left",
// 右侧嘴部的文本
// 默认:"Right"
rightString: "右侧",
// 上述两个文本的样式
// 默认:null
textStyle: TextStyle(
fontSize: 16,
),
// 提示的文本样式
// 默认:null
tooltipTextStyle: TextStyle(
fontSize: 16,
),
)
示例代码
import 'package:flutter/material.dart';
import 'package:teeth_selector/teeth_selector.dart';
void main() => runApp(
MaterialApp(
theme: ThemeData(
primaryColor: Colors.blue,
),
home: MyApp(),
),
);
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Card(
child: Padding(
padding: const EdgeInsets.all(20),
child: TeethSelector(
onChange: (selected) => print(selected),
multiSelect: false,
colorized: {
"15": Colors.teal,
"26": Colors.orange,
"24": Colors.transparent,
},
StrokedColorized: {"24": Colors.grey.withOpacity(0.5)},
notation: (isoString) => "Tooth ISO: $isoString",
selectedColor: Colors.red,
showPrimary: false,
),
),
);
}
}
更多关于Flutter牙齿选择器插件teeth_selector的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter牙齿选择器插件teeth_selector的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用teeth_selector
插件的一个详细代码示例。这个插件通常用于在应用中提供一个牙齿选择器界面,让用户可以选择或标记牙齿。
首先,确保你已经在pubspec.yaml
文件中添加了teeth_selector
依赖:
dependencies:
flutter:
sdk: flutter
teeth_selector: ^最新版本号 # 替换为实际的最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter应用中实现牙齿选择器。以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:teeth_selector/teeth_selector.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Teeth Selector Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: TeethSelectorScreen(),
);
}
}
class TeethSelectorScreen extends StatefulWidget {
@override
_TeethSelectorScreenState createState() => _TeethSelectorScreenState();
}
class _TeethSelectorScreenState extends State<TeethSelectorScreen> {
List<int> selectedTeeth = [];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Teeth Selector Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Selected Teeth:'),
Wrap(
spacing: 8.0,
runSpacing: 8.0,
children: selectedTeeth.map((int toothIndex) {
return Chip(
label: Text('Tooth $toothIndex'),
onDeleted: () {
setState(() {
selectedTeeth.remove(toothIndex);
});
},
);
}).toList(),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TeethSelectorPage(
initialSelectedTeeth: selectedTeeth,
onTeethSelected: (List<int> teeth) {
setState(() {
selectedTeeth = teeth;
});
},
),
),
);
},
child: Text('Select Teeth'),
),
],
),
),
);
}
}
class TeethSelectorPage extends StatefulWidget {
final List<int> initialSelectedTeeth;
final ValueChanged<List<int>> onTeethSelected;
TeethSelectorPage({
required this.initialSelectedTeeth,
required this.onTeethSelected,
});
@override
_TeethSelectorPageState createState() => _TeethSelectorPageState();
}
class _TeethSelectorPageState extends State<TeethSelectorPage> {
late TeethSelectorController controller;
@override
void initState() {
super.initState();
controller = TeethSelectorController(
initialSelectedTeeth: widget.initialSelectedTeeth,
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Select Teeth'),
),
body: TeethSelector(
controller: controller,
onTeethSelected: (List<int> teeth) {
widget.onTeethSelected(teeth);
Navigator.pop(context);
},
),
);
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
}
代码解释:
- 依赖添加:在
pubspec.yaml
中添加teeth_selector
依赖。 - 主应用结构:
MyApp
是主应用,包含一个TeethSelectorScreen
。 - 牙齿选择器屏幕:
TeethSelectorScreen
显示已选择的牙齿,并提供一个按钮来打开牙齿选择器页面。 - 牙齿选择器页面:
TeethSelectorPage
是实际的牙齿选择器页面,使用TeethSelector
组件。 - 控制器:
TeethSelectorController
用于管理牙齿选择器的状态。 - 数据传递:通过构造函数传递初始选择的牙齿列表和选择完成后的回调函数。
这个示例展示了如何使用teeth_selector
插件创建一个简单的牙齿选择器界面,并在用户选择牙齿后更新主屏幕上的显示。根据插件的实际API和版本,可能需要对代码进行一些调整。确保查看插件的官方文档以获取最新的使用指南和API参考。