Flutter极客软件库开源发布:跨平台应用开发新选择
基于Flutter开发的现代化软件库,持续更新中,欢迎社区贡献
🎯 项目概述
最近利用空闲时间,我使用Flutter开发了一个极客软件库(Geek Library),现已正式开源。该项目旨在为开发者提供一个实用、高效的Flutter组件和工具集合,目前仍在持续完善中,欢迎社区开发者提出宝贵建议和贡献代码。
开源地址:
🚀 项目特色
跨平台支持
- 全平台兼容:基于Flutter框架,支持iOS、Android、Web、Windows、macOS、Linux六大平台
- 一致体验:在不同平台上提供统一的用户体验和界面设计
- 高效开发:一次编写,多端运行,大幅提升开发效率
技术架构
// 示例:基础组件结构
class GeekButton extends StatelessWidget {
final String text;
final VoidCallback onPressed;
final GeekButtonStyle style;
const GeekButton({
Key? key,
required this.text,
required this.onPressed,
this.style = GeekButtonStyle.primary,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: onPressed,
style: _getButtonStyle(style),
child: Text(text),
);
}
ButtonStyle _getButtonStyle(GeekButtonStyle style) {
// 样式配置逻辑
}
}
📦 主要功能模块
核心组件库
- UI组件:按钮、卡片、对话框、表单控件等
- 布局组件:响应式布局、网格系统、列表视图
- 动画组件:预定义动画效果和过渡动画
工具类集合
// 工具类示例
class GeekUtils {
// 网络请求工具
static Future<Response> get(String url) async {
return await http.get(Uri.parse(url));
}
// 本地存储工具
static Future<void> saveData(String key, String value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString(key, value);
}
// 设备信息工具
static Future<String> getDeviceInfo() async {
final deviceInfo = DeviceInfoPlugin();
if (Platform.isAndroid) {
final androidInfo = await deviceInfo.androidInfo;
return androidInfo.model;
} else if (Platform.isIOS) {
final iosInfo = await deviceInfo.iosInfo;
return iosInfo.utsname.machine;
}
return 'Unknown device';
}
}
特色功能
- 主题切换:支持明暗主题动态切换
- 多语言支持:国际化支持,易于本地化
- 状态管理:提供多种状态管理方案
- 路由管理:简洁高效的路由导航系统
🛠️ 安装和使用
环境要求
- Flutter SDK:3.0.0或更高版本
- Dart:2.17.0或更高版本
- 开发工具:Android Studio、VS Code或IntelliJ IDEA
安装步骤
添加依赖
dependencies: geek_library: git: url: https://gitee.com/geek-fox/geek.git ref: main
导入包
import 'package:geek_library/geek_library.dart';
使用组件
GeekButton( text: '点击我', onPressed: () { GeekUtils.showToast('Hello Geek!'); }, style: GeekButtonStyle.primary, )
🎨 自定义配置
主题定制
// 自定义主题配置
GeekThemeData myTheme = GeekThemeData(
primaryColor: Colors.blue,
accentColor: Colors.orange,
textTheme: TextTheme(
headline1: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
bodyText1: TextStyle(fontSize: 16, color: Colors.black87),
),
);
// 应用主题
GeekApp(
theme: myTheme,
home: MyHomePage(),
);
组件样式覆盖
// 自定义按钮样式
GeekButton(
text: '自定义按钮',
onPressed: () {},
style: GeekButtonStyle.custom(
backgroundColor: Colors.purple,
textColor: Colors.white,
borderRadius: 20,
),
)
🔧 开发指南
项目结构
geek/
├── lib/
│ ├── src/
│ │ ├── components/ # 组件库
│ │ ├── utils/ # 工具类
│ │ ├── themes/ # 主题配置
│ │ └── models/ # 数据模型
│ ├── geek_library.dart # 主入口文件
│ └── exports.dart # 导出文件
├── example/ # 示例项目
└── test/ # 测试文件
贡献代码
- Fork仓库
创建特性分支
git checkout -b feature/AmazingFeature
提交更改
git commit -m 'Add some AmazingFeature'
推送到分支
git push origin feature/AmazingFeature
- 创建Pull Request
📱 示例应用
项目包含完整的示例应用,展示所有组件的使用方法:
// 示例应用主入口
void main() {
runApp(GeekExampleApp());
}
class GeekExampleApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Geek Library Example',
theme: GeekThemes.lightTheme,
darkTheme: GeekThemes.darkTheme,
home: ComponentShowcase(),
);
}
}
🚀 未来发展计划
- 增加更多UI组件
- 添加高级动画效果
- 支持插件系统
- 提供更多工具类
- 完善文档和示例
- 增加测试覆盖率
🔒 代码保护建议(PHP相关)
虽然本项目是Dart/Flutter项目,但对于后端PHP代码,建议使用加密保护:
PHP代码加密平台 提供:
- 多种加密方式:Sg16、Deck3、Ic12等版本
- 灵活的方案:goto、enphp、noname等加密方式
- 完全免费:全站免费使用
- 易于使用:轻松保护代码安全
💡 使用建议
- 学习参考:适合学习Flutter组件开发
- 项目开发:可直接用于实际项目开发
- 二次开发:基于现有架构进行功能扩展
- 贡献参与:欢迎提交PR和Issue
🎉 结语
Geek软件库是一个持续发展的Flutter组件库项目,旨在为开发者提供高质量、可复用的UI组件和工具类。项目完全开源,欢迎社区开发者参与贡献,共同打造更好的Flutter开发生态。
项目特点:
- 🌟 完全开源,社区驱动
- 🚀 多平台支持,一次编写到处运行
- 🎨 丰富的UI组件和主题系统
- 🔧 实用的工具类集合
- 📖 完整的示例和文档
如果您对这个项目感兴趣,欢迎:
- ⭐ Star 项目支持
- 🐛 提交Issue反馈问题
- 🔄 Fork代码进行二次开发
- 💬 提出宝贵建议和功能需求
欢迎访问Gitee仓库查看详细代码和示例:
让我们一起打造更好的Flutter开发体验!