├── LICENSE ├── CHANGELOG.md ├── example ├── web │ ├── favicon.png │ ├── icons │ │ ├── Icon-192.png │ │ ├── Icon-512.png │ │ ├── Icon-maskable-192.png │ │ └── Icon-maskable-512.png │ ├── manifest.json │ └── index.html ├── README.md ├── .gitignore ├── .metadata ├── lib │ └── main.dart ├── analysis_options.yaml ├── pubspec.yaml └── pubspec.lock ├── analysis_options.yaml ├── .gitignore ├── .metadata ├── README.md ├── pubspec.yaml └── lib └── swiftter.dart /LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oboard/swiftter/main/example/web/favicon.png -------------------------------------------------------------------------------- /example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oboard/swiftter/main/example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oboard/swiftter/main/example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /example/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oboard/swiftter/main/example/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /example/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oboard/swiftter/main/example/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | include: package:flutter_lints/flutter.yaml 2 | 3 | # Additional information about this file can be found at 4 | # https://dart.dev/guides/language/analysis-options 5 | -------------------------------------------------------------------------------- /example/README.md: -------------------------------------------------------------------------------- 1 | # Swiftter 2 | Swiftter是一个Flutter Plugin,让你使用Swift UI的方式描述UI 3 | 4 | ```swift 5 | VStack { 6 | Text("Swiffter") 7 | .color(.black) 8 | .shadow(color: .black, radius: 24, x: 0, y: 0), 9 | }.padding(.all, 8).blur(12), 10 | ``` 11 | 12 | ```dart 13 | VStack([ 14 | const Text("Swiffter") 15 | .color(Colors.black) 16 | .fontSize(24) 17 | .shadow(color: Colors.black, radius: 24, x: 0, y: 0) 18 | .expanded(), 19 | ]).padding(all: 8).blur(12), 20 | ``` -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. 26 | /pubspec.lock 27 | **/doc/api/ 28 | .dart_tool/ 29 | .packages 30 | build/ 31 | -------------------------------------------------------------------------------- /.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled. 5 | 6 | version: 7 | revision: 2ad6cd72c040113b47ee9055e722606a490ef0da 8 | channel: stable 9 | 10 | project_type: plugin 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 2ad6cd72c040113b47ee9055e722606a490ef0da 17 | base_revision: 2ad6cd72c040113b47ee9055e722606a490ef0da 18 | 19 | # User provided section 20 | 21 | # List of Local paths (relative to this file) that should be 22 | # ignored by the migrate tool. 23 | # 24 | # Files that are not part of the templates will be ignored by default. 25 | unmanaged_files: 26 | - 'lib/main.dart' 27 | - 'ios/Runner.xcodeproj/project.pbxproj' 28 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | migrate_working_dir/ 12 | 13 | # IntelliJ related 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # The .vscode folder contains launch configuration and tasks you configure in 20 | # VS Code which you may wish to be included in version control, so this line 21 | # is commented out by default. 22 | #.vscode/ 23 | 24 | # Flutter/Dart/Pub related 25 | **/doc/api/ 26 | **/ios/Flutter/.last_build_id 27 | .dart_tool/ 28 | .flutter-plugins 29 | .flutter-plugins-dependencies 30 | .packages 31 | .pub-cache/ 32 | .pub/ 33 | /build/ 34 | 35 | # Symbolication related 36 | app.*.symbols 37 | 38 | # Obfuscation related 39 | app.*.map.json 40 | 41 | # Android Studio will place build artifacts here 42 | /android/app/debug 43 | /android/app/profile 44 | /android/app/release 45 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # swiftter 2 | 3 | A new Flutter plugin project. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter 8 | [plug-in package](https://flutter.dev/developing-packages/), 9 | a specialized package that includes platform-specific implementation code for 10 | Android and/or iOS. 11 | 12 | For help getting started with Flutter development, view the 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | 16 | The plugin project was generated without specifying the `--platforms` flag, no platforms are currently supported. 17 | To add platforms, run `flutter create -t plugin --platforms .` in this directory. 18 | You can also find a detailed instruction on how to add platforms in the `pubspec.yaml` at https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms. 19 | -------------------------------------------------------------------------------- /example/.metadata: -------------------------------------------------------------------------------- 1 | # This file tracks properties of this Flutter project. 2 | # Used by Flutter tool to assess capabilities and perform upgrades etc. 3 | # 4 | # This file should be version controlled. 5 | 6 | version: 7 | revision: 2ad6cd72c040113b47ee9055e722606a490ef0da 8 | channel: stable 9 | 10 | project_type: app 11 | 12 | # Tracks metadata for the flutter migrate command 13 | migration: 14 | platforms: 15 | - platform: root 16 | create_revision: 2ad6cd72c040113b47ee9055e722606a490ef0da 17 | base_revision: 2ad6cd72c040113b47ee9055e722606a490ef0da 18 | - platform: web 19 | create_revision: 2ad6cd72c040113b47ee9055e722606a490ef0da 20 | base_revision: 2ad6cd72c040113b47ee9055e722606a490ef0da 21 | 22 | # User provided section 23 | 24 | # List of Local paths (relative to this file) that should be 25 | # ignored by the migrate tool. 26 | # 27 | # Files that are not part of the templates will be ignored by default. 28 | unmanaged_files: 29 | - 'lib/main.dart' 30 | - 'ios/Runner.xcodeproj/project.pbxproj' 31 | -------------------------------------------------------------------------------- /example/web/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "short_name": "example", 4 | "start_url": ".", 5 | "display": "standalone", 6 | "background_color": "#0175C2", 7 | "theme_color": "#0175C2", 8 | "description": "A new Flutter project.", 9 | "orientation": "portrait-primary", 10 | "prefer_related_applications": false, 11 | "icons": [ 12 | { 13 | "src": "icons/Icon-192.png", 14 | "sizes": "192x192", 15 | "type": "image/png" 16 | }, 17 | { 18 | "src": "icons/Icon-512.png", 19 | "sizes": "512x512", 20 | "type": "image/png" 21 | }, 22 | { 23 | "src": "icons/Icon-maskable-192.png", 24 | "sizes": "192x192", 25 | "type": "image/png", 26 | "purpose": "maskable" 27 | }, 28 | { 29 | "src": "icons/Icon-maskable-512.png", 30 | "sizes": "512x512", 31 | "type": "image/png", 32 | "purpose": "maskable" 33 | } 34 | ] 35 | } 36 | -------------------------------------------------------------------------------- /example/lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:swiftter/swiftter.dart'; 3 | 4 | void main() => runApp(const TestApp()); 5 | 6 | class TestApp extends StatelessWidget { 7 | const TestApp({super.key}); 8 | @override 9 | Widget build(BuildContext context) { 10 | return MaterialApp( 11 | title: 'Swiftter Demo', 12 | theme: ThemeData( 13 | useMaterial3: true, 14 | ), 15 | home: const _TestHomePage(), 16 | ); 17 | } 18 | } 19 | 20 | class _TestHomePage extends StatefulWidget { 21 | const _TestHomePage(); 22 | 23 | @override 24 | State<_TestHomePage> createState() => _TestHomePageState(); 25 | } 26 | 27 | class _TestHomePageState extends State<_TestHomePage> { 28 | @override 29 | Widget build(BuildContext context) { 30 | return Scaffold( 31 | appBar: AppBar(title: const Text('Swiftter Demo')), 32 | body: VStack([ 33 | const Text("Swiffter") 34 | .color(Colors.white) 35 | .fontSize(24) 36 | .bold() 37 | .shadow(color: Colors.black, radius: 24, x: 0, y: 0) 38 | .expanded(), 39 | ]).padding(all: 80), 40 | ); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /example/analysis_options.yaml: -------------------------------------------------------------------------------- 1 | # This file configures the analyzer, which statically analyzes Dart code to 2 | # check for errors, warnings, and lints. 3 | # 4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled 5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be 6 | # invoked from the command line by running `flutter analyze`. 7 | 8 | # The following line activates a set of recommended lints for Flutter apps, 9 | # packages, and plugins designed to encourage good coding practices. 10 | include: package:flutter_lints/flutter.yaml 11 | 12 | linter: 13 | # The lint rules applied to this project can be customized in the 14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml` 15 | # included above or to enable additional rules. A list of all available lints 16 | # and their documentation is published at 17 | # https://dart-lang.github.io/linter/lints/index.html. 18 | # 19 | # Instead of disabling a lint rule for the entire project in the 20 | # section below, it can also be suppressed for a single line of code 21 | # or a specific dart file by using the `// ignore: name_of_lint` and 22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file 23 | # producing the lint. 24 | rules: 25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule 26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule 27 | 28 | # Additional information about this file can be found at 29 | # https://dart.dev/guides/language/analysis-options 30 | -------------------------------------------------------------------------------- /example/web/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | example 33 | 34 | 35 | 39 | 40 | 41 | 42 | 43 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: swiftter 2 | description: A new Flutter plugin project. 3 | version: 0.0.1 4 | homepage: 5 | 6 | environment: 7 | sdk: '>=2.19.4 <3.0.0' 8 | flutter: ">=2.5.0" 9 | 10 | dependencies: 11 | flutter: 12 | sdk: flutter 13 | plugin_platform_interface: ^2.0.2 14 | 15 | dev_dependencies: 16 | flutter_test: 17 | sdk: flutter 18 | flutter_lints: ^2.0.0 19 | 20 | # For information on the generic Dart part of this file, see the 21 | # following page: https://dart.dev/tools/pub/pubspec 22 | 23 | # The following section is specific to Flutter packages. 24 | flutter: 25 | # This section identifies this Flutter project as a plugin project. 26 | # The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.) 27 | # which should be registered in the plugin registry. This is required for 28 | # using method channels. 29 | # The Android 'package' specifies package in which the registered class is. 30 | # This is required for using method channels on Android. 31 | # The 'ffiPlugin' specifies that native code should be built and bundled. 32 | # This is required for using `dart:ffi`. 33 | # All these are used by the tooling to maintain consistency when 34 | # adding or updating assets for this project. 35 | plugin: 36 | platforms: 37 | # This plugin project was generated without specifying any 38 | # platforms with the `--platform` argument. If you see the `some_platform` map below, remove it and 39 | # then add platforms following the instruction here: 40 | # https://flutter.dev/docs/development/packages-and-plugins/developing-packages#plugin-platforms 41 | # ------------------- 42 | some_platform: 43 | pluginClass: somePluginClass 44 | # ------------------- 45 | 46 | # To add assets to your plugin package, add an assets section, like this: 47 | # assets: 48 | # - images/a_dot_burr.jpeg 49 | # - images/a_dot_ham.jpeg 50 | # 51 | # For details regarding assets in packages, see 52 | # https://flutter.dev/assets-and-images/#from-packages 53 | # 54 | # An image asset can refer to one or more resolution-specific "variants", see 55 | # https://flutter.dev/assets-and-images/#resolution-aware 56 | 57 | # To add custom fonts to your plugin package, add a fonts section here, 58 | # in this "flutter" section. Each entry in this list should have a 59 | # "family" key with the font family name, and a "fonts" key with a 60 | # list giving the asset and other descriptors for the font. For 61 | # example: 62 | # fonts: 63 | # - family: Schyler 64 | # fonts: 65 | # - asset: fonts/Schyler-Regular.ttf 66 | # - asset: fonts/Schyler-Italic.ttf 67 | # style: italic 68 | # - family: Trajan Pro 69 | # fonts: 70 | # - asset: fonts/TrajanPro.ttf 71 | # - asset: fonts/TrajanPro_Bold.ttf 72 | # weight: 700 73 | # 74 | # For details regarding fonts in packages, see 75 | # https://flutter.dev/custom-fonts/#from-packages 76 | -------------------------------------------------------------------------------- /example/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: swiftter_example 2 | description: Demonstrates how to use the swiftter plugin. 3 | # The following line prevents the package from being accidentally published to 4 | # pub.dev using `flutter pub publish`. This is preferred for private packages. 5 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 6 | 7 | environment: 8 | sdk: '>=2.19.4 <3.0.0' 9 | 10 | # Dependencies specify other packages that your package needs in order to work. 11 | # To automatically upgrade your package dependencies to the latest versions 12 | # consider running `flutter pub upgrade --major-versions`. Alternatively, 13 | # dependencies can be manually updated by changing the version numbers below to 14 | # the latest version available on pub.dev. To see which dependencies have newer 15 | # versions available, run `flutter pub outdated`. 16 | dependencies: 17 | flutter: 18 | sdk: flutter 19 | 20 | swiftter: 21 | # When depending on this package from a real application you should use: 22 | # swiftter: ^x.y.z 23 | # See https://dart.dev/tools/pub/dependencies#version-constraints 24 | # The example app is bundled with the plugin so we use a path dependency on 25 | # the parent directory to use the current plugin's version. 26 | path: ../ 27 | 28 | # The following adds the Cupertino Icons font to your application. 29 | # Use with the CupertinoIcons class for iOS style icons. 30 | cupertino_icons: ^1.0.2 31 | 32 | dev_dependencies: 33 | flutter_test: 34 | sdk: flutter 35 | 36 | # The "flutter_lints" package below contains a set of recommended lints to 37 | # encourage good coding practices. The lint set provided by the package is 38 | # activated in the `analysis_options.yaml` file located at the root of your 39 | # package. See that file for information about deactivating specific lint 40 | # rules and activating additional ones. 41 | flutter_lints: ^2.0.0 42 | 43 | # For information on the generic Dart part of this file, see the 44 | # following page: https://dart.dev/tools/pub/pubspec 45 | 46 | # The following section is specific to Flutter packages. 47 | flutter: 48 | 49 | # The following line ensures that the Material Icons font is 50 | # included with your application, so that you can use the icons in 51 | # the material Icons class. 52 | uses-material-design: true 53 | 54 | # To add assets to your application, add an assets section, like this: 55 | # assets: 56 | # - images/a_dot_burr.jpeg 57 | # - images/a_dot_ham.jpeg 58 | 59 | # An image asset can refer to one or more resolution-specific "variants", see 60 | # https://flutter.dev/assets-and-images/#resolution-aware 61 | 62 | # For details regarding adding assets from package dependencies, see 63 | # https://flutter.dev/assets-and-images/#from-packages 64 | 65 | # To add custom fonts to your application, add a fonts section here, 66 | # in this "flutter" section. Each entry in this list should have a 67 | # "family" key with the font family name, and a "fonts" key with a 68 | # list giving the asset and other descriptors for the font. For 69 | # example: 70 | # fonts: 71 | # - family: Schyler 72 | # fonts: 73 | # - asset: fonts/Schyler-Regular.ttf 74 | # - asset: fonts/Schyler-Italic.ttf 75 | # style: italic 76 | # - family: Trajan Pro 77 | # fonts: 78 | # - asset: fonts/TrajanPro.ttf 79 | # - asset: fonts/TrajanPro_Bold.ttf 80 | # weight: 700 81 | # 82 | # For details regarding fonts from package dependencies, 83 | # see https://flutter.dev/custom-fonts/#from-packages 84 | -------------------------------------------------------------------------------- /lib/swiftter.dart: -------------------------------------------------------------------------------- 1 | // ignore_for_file: non_constant_identifier_names, override_on_non_overriding_member 2 | 3 | import 'dart:ui'; 4 | 5 | import 'package:flutter/widgets.dart'; 6 | 7 | // typedef ZStack = Stack; 8 | // typedef VStack = Column; 9 | // typedef HStack = Row; 10 | 11 | typedef FunctionWithArguments = dynamic Function( 12 | List positionalArguments, Map namedArguments); 13 | 14 | Column VStack( 15 | List children, { 16 | MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, 17 | MainAxisSize mainAxisSize = MainAxisSize.max, 18 | CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, 19 | TextDirection? textDirection, 20 | VerticalDirection verticalDirection = VerticalDirection.down, 21 | TextBaseline? textBaseline, 22 | }) { 23 | return Column(children: children); 24 | } 25 | 26 | Row HStack( 27 | List children, { 28 | MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, 29 | MainAxisSize mainAxisSize = MainAxisSize.max, 30 | CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, 31 | TextDirection? textDirection, 32 | VerticalDirection verticalDirection = VerticalDirection.down, 33 | TextBaseline? textBaseline, 34 | }) { 35 | return Row(children: children); 36 | } 37 | 38 | Stack ZStack([List list = const []]) { 39 | return Stack(children: list); 40 | } 41 | 42 | extension WidgetExtension on Widget { 43 | Padding padding( 44 | {double all = 8, 45 | double? left, 46 | double? right, 47 | double? top, 48 | double? bottom, 49 | double? vertical, 50 | double? horizontal}) { 51 | if (left != null || right != null || top != null || bottom != null) { 52 | return Padding( 53 | padding: EdgeInsets.only( 54 | left: horizontal ?? (left ?? 0), 55 | right: horizontal ?? (right ?? 0), 56 | top: vertical ?? (top ?? 0), 57 | bottom: vertical ?? (bottom ?? 0), 58 | ), 59 | child: this, 60 | ); 61 | } else { 62 | return Padding( 63 | padding: EdgeInsets.all(all), 64 | child: this, 65 | ); 66 | } 67 | } 68 | 69 | SizedBox frame({double? width, double? height}) { 70 | return SizedBox( 71 | width: width, 72 | height: height, 73 | child: this, 74 | ); 75 | } 76 | 77 | Expanded expanded() { 78 | return Expanded( 79 | child: this, 80 | ); 81 | } 82 | 83 | @Deprecated("change to color") 84 | DefaultTextStyle foregroundColor(Color color) { 85 | return this.color(color); 86 | } 87 | 88 | DefaultTextStyle color(Color color) { 89 | TextStyle textStyle = const TextStyle(); 90 | Widget ref = this; 91 | 92 | if (this is DefaultTextStyle) { 93 | textStyle = (this as DefaultTextStyle).style; 94 | ref = (this as DefaultTextStyle).child; 95 | } 96 | return DefaultTextStyle( 97 | style: textStyle.copyWith(color: color), child: ref); 98 | } 99 | 100 | DefaultTextStyle font(TextStyle style) { 101 | return DefaultTextStyle(style: style, child: this); 102 | } 103 | 104 | DefaultTextStyle fontSize(double size) { 105 | TextStyle textStyle = const TextStyle(); 106 | Widget ref = this; 107 | 108 | if (this is DefaultTextStyle) { 109 | textStyle = (this as DefaultTextStyle).style; 110 | ref = (this as DefaultTextStyle).child; 111 | } 112 | 113 | return DefaultTextStyle( 114 | style: textStyle.copyWith(fontSize: size), child: ref); 115 | } 116 | 117 | DefaultTextStyle bold() { 118 | TextStyle textStyle = const TextStyle(); 119 | Widget ref = this; 120 | 121 | if (this is DefaultTextStyle) { 122 | textStyle = (this as DefaultTextStyle).style; 123 | ref = (this as DefaultTextStyle).child; 124 | } 125 | 126 | return DefaultTextStyle( 127 | style: textStyle.copyWith(fontWeight: FontWeight.bold), child: ref); 128 | } 129 | 130 | Widget shadow( 131 | {double radius = 0, 132 | Color color = const Color.fromARGB(255, 0, 0, 0), 133 | double x = 0, 134 | double y = 0}) { 135 | TextStyle textStyle = const TextStyle(); 136 | Widget ref = this; 137 | 138 | if (this is DefaultTextStyle) { 139 | textStyle = (this as DefaultTextStyle).style; 140 | ref = (this as DefaultTextStyle).child; 141 | } 142 | 143 | return DefaultTextStyle( 144 | style: textStyle.copyWith( 145 | shadows: [ 146 | BoxShadow( 147 | blurRadius: radius, 148 | color: color, 149 | offset: Offset(x, y), 150 | ), 151 | ], 152 | ), 153 | child: ref, 154 | ); 155 | } 156 | 157 | Opacity opacity(double opacity) { 158 | return Opacity( 159 | opacity: opacity, 160 | child: this, 161 | ); 162 | } 163 | 164 | ImageFiltered blur(double radius) { 165 | return ImageFiltered( 166 | imageFilter: ImageFilter.blur(sigmaX: radius, sigmaY: radius), 167 | child: this, 168 | ); 169 | } 170 | } 171 | -------------------------------------------------------------------------------- /example/pubspec.lock: -------------------------------------------------------------------------------- 1 | # Generated by pub 2 | # See https://dart.dev/tools/pub/glossary#lockfile 3 | packages: 4 | async: 5 | dependency: transitive 6 | description: 7 | name: async 8 | sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 9 | url: "https://pub.flutter-io.cn" 10 | source: hosted 11 | version: "2.10.0" 12 | boolean_selector: 13 | dependency: transitive 14 | description: 15 | name: boolean_selector 16 | sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" 17 | url: "https://pub.flutter-io.cn" 18 | source: hosted 19 | version: "2.1.1" 20 | characters: 21 | dependency: transitive 22 | description: 23 | name: characters 24 | sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c 25 | url: "https://pub.flutter-io.cn" 26 | source: hosted 27 | version: "1.2.1" 28 | clock: 29 | dependency: transitive 30 | description: 31 | name: clock 32 | sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf 33 | url: "https://pub.flutter-io.cn" 34 | source: hosted 35 | version: "1.1.1" 36 | collection: 37 | dependency: transitive 38 | description: 39 | name: collection 40 | sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 41 | url: "https://pub.flutter-io.cn" 42 | source: hosted 43 | version: "1.17.0" 44 | cupertino_icons: 45 | dependency: "direct main" 46 | description: 47 | name: cupertino_icons 48 | sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be 49 | url: "https://pub.flutter-io.cn" 50 | source: hosted 51 | version: "1.0.5" 52 | fake_async: 53 | dependency: transitive 54 | description: 55 | name: fake_async 56 | sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" 57 | url: "https://pub.flutter-io.cn" 58 | source: hosted 59 | version: "1.3.1" 60 | flutter: 61 | dependency: "direct main" 62 | description: flutter 63 | source: sdk 64 | version: "0.0.0" 65 | flutter_lints: 66 | dependency: "direct dev" 67 | description: 68 | name: flutter_lints 69 | sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c 70 | url: "https://pub.flutter-io.cn" 71 | source: hosted 72 | version: "2.0.1" 73 | flutter_test: 74 | dependency: "direct dev" 75 | description: flutter 76 | source: sdk 77 | version: "0.0.0" 78 | js: 79 | dependency: transitive 80 | description: 81 | name: js 82 | sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" 83 | url: "https://pub.flutter-io.cn" 84 | source: hosted 85 | version: "0.6.5" 86 | lints: 87 | dependency: transitive 88 | description: 89 | name: lints 90 | sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" 91 | url: "https://pub.flutter-io.cn" 92 | source: hosted 93 | version: "2.0.1" 94 | matcher: 95 | dependency: transitive 96 | description: 97 | name: matcher 98 | sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" 99 | url: "https://pub.flutter-io.cn" 100 | source: hosted 101 | version: "0.12.13" 102 | material_color_utilities: 103 | dependency: transitive 104 | description: 105 | name: material_color_utilities 106 | sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 107 | url: "https://pub.flutter-io.cn" 108 | source: hosted 109 | version: "0.2.0" 110 | meta: 111 | dependency: transitive 112 | description: 113 | name: meta 114 | sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" 115 | url: "https://pub.flutter-io.cn" 116 | source: hosted 117 | version: "1.8.0" 118 | path: 119 | dependency: transitive 120 | description: 121 | name: path 122 | sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b 123 | url: "https://pub.flutter-io.cn" 124 | source: hosted 125 | version: "1.8.2" 126 | plugin_platform_interface: 127 | dependency: transitive 128 | description: 129 | name: plugin_platform_interface 130 | sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc" 131 | url: "https://pub.flutter-io.cn" 132 | source: hosted 133 | version: "2.1.4" 134 | sky_engine: 135 | dependency: transitive 136 | description: flutter 137 | source: sdk 138 | version: "0.0.99" 139 | source_span: 140 | dependency: transitive 141 | description: 142 | name: source_span 143 | sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 144 | url: "https://pub.flutter-io.cn" 145 | source: hosted 146 | version: "1.9.1" 147 | stack_trace: 148 | dependency: transitive 149 | description: 150 | name: stack_trace 151 | sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 152 | url: "https://pub.flutter-io.cn" 153 | source: hosted 154 | version: "1.11.0" 155 | stream_channel: 156 | dependency: transitive 157 | description: 158 | name: stream_channel 159 | sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" 160 | url: "https://pub.flutter-io.cn" 161 | source: hosted 162 | version: "2.1.1" 163 | string_scanner: 164 | dependency: transitive 165 | description: 166 | name: string_scanner 167 | sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" 168 | url: "https://pub.flutter-io.cn" 169 | source: hosted 170 | version: "1.2.0" 171 | swiftter: 172 | dependency: "direct main" 173 | description: 174 | path: ".." 175 | relative: true 176 | source: path 177 | version: "0.0.1" 178 | term_glyph: 179 | dependency: transitive 180 | description: 181 | name: term_glyph 182 | sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 183 | url: "https://pub.flutter-io.cn" 184 | source: hosted 185 | version: "1.2.1" 186 | test_api: 187 | dependency: transitive 188 | description: 189 | name: test_api 190 | sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 191 | url: "https://pub.flutter-io.cn" 192 | source: hosted 193 | version: "0.4.16" 194 | vector_math: 195 | dependency: transitive 196 | description: 197 | name: vector_math 198 | sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" 199 | url: "https://pub.flutter-io.cn" 200 | source: hosted 201 | version: "2.1.4" 202 | sdks: 203 | dart: ">=2.19.4 <3.0.0" 204 | flutter: ">=2.5.0" 205 | --------------------------------------------------------------------------------