From e0e47278e145ac9f4561bb7eb8bfdf298452a4b5 Mon Sep 17 00:00:00 2001 From: wangliankun Date: Mon, 20 Oct 2025 10:34:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(create):=E6=B7=BB=E5=8A=A0=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flutter_common/.gitignore | 31 +++++++ flutter_common/.metadata | 10 +++ flutter_common/CHANGELOG.md | 3 + flutter_common/LICENSE | 1 + flutter_common/README.md | 39 +++++++++ flutter_common/analysis_options.yaml | 4 + flutter_common/assets/images/noContainer.png | Bin 0 -> 27143 bytes flutter_common/lib/flutter_common.dart | 5 ++ flutter_common/pubspec.yaml | 82 +++++++++++++++++++ flutter_common/test/flutter_common_test.dart | 12 +++ 10 files changed, 187 insertions(+) create mode 100644 flutter_common/.gitignore create mode 100644 flutter_common/.metadata create mode 100644 flutter_common/CHANGELOG.md create mode 100644 flutter_common/LICENSE create mode 100644 flutter_common/README.md create mode 100644 flutter_common/analysis_options.yaml create mode 100755 flutter_common/assets/images/noContainer.png create mode 100644 flutter_common/lib/flutter_common.dart create mode 100644 flutter_common/pubspec.yaml create mode 100644 flutter_common/test/flutter_common_test.dart diff --git a/flutter_common/.gitignore b/flutter_common/.gitignore new file mode 100644 index 0000000..eb6c05c --- /dev/null +++ b/flutter_common/.gitignore @@ -0,0 +1,31 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +build/ diff --git a/flutter_common/.metadata b/flutter_common/.metadata new file mode 100644 index 0000000..e5309df --- /dev/null +++ b/flutter_common/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "d8a9f9a52e5af486f80d932e838ee93861ffd863" + channel: "stable" + +project_type: package diff --git a/flutter_common/CHANGELOG.md b/flutter_common/CHANGELOG.md new file mode 100644 index 0000000..41cc7d8 --- /dev/null +++ b/flutter_common/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/flutter_common/LICENSE b/flutter_common/LICENSE new file mode 100644 index 0000000..ba75c69 --- /dev/null +++ b/flutter_common/LICENSE @@ -0,0 +1 @@ +TODO: Add your license here. diff --git a/flutter_common/README.md b/flutter_common/README.md new file mode 100644 index 0000000..4a260d8 --- /dev/null +++ b/flutter_common/README.md @@ -0,0 +1,39 @@ + + +TODO: Put a short description of the package here that helps potential users +know whether this package might be useful for them. + +## Features + +TODO: List what your package can do. Maybe include images, gifs, or videos. + +## Getting started + +TODO: List prerequisites and provide or point to information on how to +start using the package. + +## Usage + +TODO: Include short and useful examples for package users. Add longer examples +to `/example` folder. + +```dart +const like = 'sample'; +``` + +## Additional information + +TODO: Tell users more about the package: where to find more information, how to +contribute to the package, how to file issues, what response they can expect +from the package authors, and more. diff --git a/flutter_common/analysis_options.yaml b/flutter_common/analysis_options.yaml new file mode 100644 index 0000000..a5744c1 --- /dev/null +++ b/flutter_common/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/flutter_common/assets/images/noContainer.png b/flutter_common/assets/images/noContainer.png new file mode 100755 index 0000000000000000000000000000000000000000..5bd85361bb29688de7047173a6a862df2669552b GIT binary patch literal 27143 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 z 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 O0000 value + 1; +} diff --git a/flutter_common/pubspec.yaml b/flutter_common/pubspec.yaml new file mode 100644 index 0000000..c078659 --- /dev/null +++ b/flutter_common/pubspec.yaml @@ -0,0 +1,82 @@ +name: flutter_common +description: "A new Flutter project." +version: 0.0.1 +homepage: + +environment: + sdk: ^3.6.2 + flutter: ">=1.17.0" + +dependencies: + flutter: + sdk: flutter + + dio: ^5.1.1 + flutter_easyloading: ^3.0.0 + sticky_headers: ^0.3.0+2 #日历需要 + get: ^4.6.5 + flutter_screenutil: ^5.9.0 + flustars_flutter3: ^3.0.0 #工具类 SpUtil,ScreenUtil, DirectoryUtil等等。 + pull_to_refresh: ^2.0.0 + permission_handler: ^12.0.1 + flutter_staggered_grid_view: ^0.7.0 #瀑布流 + image_picker: ^1.1.0 #相册单选 + # images_picker: ^1.2.11 #相册多选 + image_gallery_saver_plus: ^4.0.1 #保存到相册 + photo_view: ^0.15.0 #查看大图 + flutter_widget_from_html_core: ^0.16.0 #html + # flutter_html: ^3.0.0 + transparent_image: ^2.0.1 #图片懒加载 + # flutter_cached_pdfview: ^0.4.3 #pdf文件 + # webview_flutter: ^4.8.0 + video_player: ^2.6.1 #视频 + # perfect_volume_control: ^1.0.5 #声音 + screen_brightness: ^2.1.7 #亮度 + provider: ^6.0.3 + # wakelock: ^0.6.2 + wakelock_plus: ^1.2.5 + url_launcher: ^6.1.10 + flutter_inappwebview: ^6.1.5 + device_info_plus: ^11.3.0 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^5.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # To add assets to your package, add an assets section, like this: + assets: + - assets/images/ + # - images/a_dot_ham.jpeg + # + # For details regarding assets in packages, see + # https://flutter.dev/to/asset-from-package + # + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/to/resolution-aware-images + + # To add custom fonts to your package, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts in packages, see + # https://flutter.dev/to/font-from-package diff --git a/flutter_common/test/flutter_common_test.dart b/flutter_common/test/flutter_common_test.dart new file mode 100644 index 0000000..e4946b1 --- /dev/null +++ b/flutter_common/test/flutter_common_test.dart @@ -0,0 +1,12 @@ +import 'package:flutter_test/flutter_test.dart'; + +import 'package:flutter_common/flutter_common.dart'; + +void main() { + test('adds one to input values', () { + final calculator = Calculator(); + expect(calculator.addOne(2), 3); + expect(calculator.addOne(-7), -6); + expect(calculator.addOne(0), 1); + }); +}