Flutter渐变效果插件gradr_lib的使用
Flutter渐变效果插件gradr_lib的使用
开发中,请自行承担风险。
你是否曾经需要将一种评级系统转换为另一种?并且不得不自己实现这些计算?gradr_lib
提供了简单接口来转换攀岩评级系统,这样你就不用重新发明轮子。
该库最初是为了开发我创建的 Gradr 应用程序而设计的,但我觉得把它开源让社区使用并希望它能帮助改进它会很酷!
Gradr 尽可能理解不同评级系统之间的差异和不一致性,所以请注意,从一个评级系统转换到另一个可能不会总是准确。你可以查看这篇文档了解 Gradr 如何处理这种情况。如果你有任何建议或帮助,请随时提出!
功能
- 评级系统
- ✅ V-Scale
- ✅ Font
- ✅ French
- ✅ YDS
- ❌ 南非
- ❌ 巴西
- ❌ 英国
- ❌ IRCRA
- ❌ UIAA
- ...
- ✅ 在评级系统之间进行转换
- ✅ 评级系统检测器
开始使用
要安装该包,请检查安装指南。
使用方法
在评级系统之间转换
以下是一个如何将 V-Scale 转换为 Font Scale 以及反向转换的例子,使用 GradeCalculator:
final vToFont = GradeCalculator(
systemA: verminGradeSystem,
systemB: fontGradeSystem,
);
// 从评级系统 A(V-Scale)转换到评级系统 B(Font Scale)
vToFont.atob(
vScale.findByName(‘V3’)
);
// > 6B
// 从评级系统 B(Font Scale)转换到评级系统 A(V-Scale)
vToFont.btoa(
fontScale.findByName(‘6B’)
);
// > V3
你也可以使用 from-to 接口进行转换,如下所示:
fontGradeSystem.convert('v3').from(verminGradeSystem); // 6b
fontGradeSystem.convert('6b').to(verminGradeSystem); // v3
检测评级系统
Gradr 还提供了一个工具来检测评级系统。
final detector = GradeSystemDetector(
detectors: [
VScaleGradeDetector(),
FontGradeDetector(),
FontGradeDetector(),
],
);
GradeDetectorResult detectedResult = detector.detect(grade);
// 返回可能的评级系统列表
detectedResult.detectedSystems;
// 返回格式化的等级(Gradr 等级类实例)
detectedResult.formalizedGrades;
// 返回原始输入
detectedResult.originalInput;
- 注意,GradeSystemDetector 允许你传递所需的检测器和/或自定义检测器。
需要其他平台的Gradr?
你可能会幸运地找到它,我们正在尝试为最常见的语言和框架提供库。看看是否有你需要的那个。
- ✅ Dart
- ❌ JavaScript
- ❌ React
- ❌ Angular
- ❌ Ionic
- ❌ Vue
- ❌ Java
- ❌ PHP
如果缺少你的平台或语言,请随时提交一个问题,我们将尝试实现它。或者,如果你愿意并且有时间,可以联系我们帮忙构建它,我们非常乐意! ❤️
额外信息
如果你遇到任何问题或想要添加一个特性,请访问 GitHub 仓库 并提交一个 问题。
支持项目
我倾向于开放源代码,并且乐于帮助那些可能需要帮助的人。
如果你正在使用该项目并且对此感到满意,或者只是想鼓励我继续创作,有几种方式可以做到:
- 给项目点赞和分享 🚀
- 报告错误 🐛
- 发送反馈
- 甚至参与编码 :P
感谢! ❤️
完整示例Demo
以下是完整的示例代码,展示了如何使用 gradr_lib
进行评级系统之间的转换和检测:
import 'package:example/routes/grade_system_converter.dart';
import 'package:example/routes/grade_system_detector.dart';
import 'package:example/routes/home.screen.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
var darkTheme = ThemeData.dark();
return MaterialApp(
title: 'Flutter Demo',
theme: darkTheme.copyWith(
appBarTheme: darkTheme.appBarTheme.copyWith(elevation: 0),
primaryColor: Colors.amber,
colorScheme: darkTheme.colorScheme.copyWith(
primary: Colors.amber,
),
),
routes: {
'home': (ctx) => const HomeScreen(),
'grade_system_detector': (ctx) => const GradeSystemDetectorScreen(),
'grade_system_converter': (ctx) => const GradeSystemConverterScreen(),
},
initialRoute: 'home',
);
}
}
更多关于Flutter渐变效果插件gradr_lib的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html