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();
  }
}

代码解释:

  1. 依赖添加:在pubspec.yaml中添加teeth_selector依赖。
  2. 主应用结构MyApp是主应用,包含一个TeethSelectorScreen
  3. 牙齿选择器屏幕TeethSelectorScreen显示已选择的牙齿,并提供一个按钮来打开牙齿选择器页面。
  4. 牙齿选择器页面TeethSelectorPage是实际的牙齿选择器页面,使用TeethSelector组件。
  5. 控制器TeethSelectorController用于管理牙齿选择器的状态。
  6. 数据传递:通过构造函数传递初始选择的牙齿列表和选择完成后的回调函数。

这个示例展示了如何使用teeth_selector插件创建一个简单的牙齿选择器界面,并在用户选择牙齿后更新主屏幕上的显示。根据插件的实际API和版本,可能需要对代码进行一些调整。确保查看插件的官方文档以获取最新的使用指南和API参考。

回到顶部