├── packages ├── unify_uni_bus │ ├── ios │ │ ├── Assets │ │ │ └── .gitkeep │ │ ├── Classes │ │ │ └── UnifyUniBusPlugin.h │ │ └── .gitignore │ ├── android │ │ ├── settings.gradle │ │ ├── src │ │ │ └── main │ │ │ │ └── AndroidManifest.xml │ │ └── .gitignore │ ├── CHANGELOG.md │ ├── example │ │ ├── android │ │ │ ├── gradle.properties │ │ │ ├── app │ │ │ │ └── src │ │ │ │ │ ├── main │ │ │ │ │ └── res │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── layout │ │ │ │ │ │ └── android_button_layout.xml │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ └── gradle-wrapper.properties │ │ │ └── .gitignore │ │ ├── ios │ │ │ ├── Flutter │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Runner │ │ │ │ ├── AppDelegate.h │ │ │ │ ├── Assets.xcassets │ │ │ │ │ ├── LaunchImage.imageset │ │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ ├── main.m │ │ │ │ └── AppDelegate.m │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── Runner.xcodeproj │ │ │ │ └── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── .gitignore │ │ └── README.md │ ├── analysis_options.yaml │ ├── .gitignore │ └── test │ │ └── unify_uni_bus_method_channel_test.dart ├── unify_uni_page │ ├── ios │ │ ├── Assets │ │ │ └── .gitkeep │ │ ├── Classes │ │ │ ├── UnifyUniPagePlugin.h │ │ │ ├── AbsUniPageFactory.h │ │ │ └── UniPageConstants.h │ │ └── .gitignore │ ├── android │ │ ├── settings.gradle │ │ ├── src │ │ │ └── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── didi │ │ │ │ └── unify_uni_page │ │ │ │ └── AbsUniPageFactoryListener.java │ │ └── .gitignore │ ├── lib │ │ ├── unify_uni_page.dart │ │ └── src │ │ │ └── constants.dart │ ├── example │ │ ├── android │ │ │ ├── gradle.properties │ │ │ ├── app │ │ │ │ └── src │ │ │ │ │ ├── main │ │ │ │ │ ├── res │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── drawable-v21 │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── layout │ │ │ │ │ │ │ └── uni_page_demo.xml │ │ │ │ │ └── java │ │ │ │ │ │ └── com │ │ │ │ │ │ └── didi │ │ │ │ │ │ └── unify_uni_page_example │ │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ │ └── NativeActivity.java │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── .gitignore │ │ │ └── settings.gradle │ │ ├── ios │ │ │ ├── Flutter │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Runner │ │ │ │ ├── AppDelegate.h │ │ │ │ ├── Assets.xcassets │ │ │ │ │ ├── LaunchImage.imageset │ │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ ├── UniPageDemo.h │ │ │ │ └── main.m │ │ │ ├── Runner.xcodeproj │ │ │ │ └── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── .gitignore │ │ ├── .metadata │ │ └── README.md │ ├── doc │ │ └── public │ │ │ ├── 00.uni_page_structure.webp │ │ │ ├── 02.uni_page_lifecycle.webp │ │ │ ├── README_Android_Native.webp │ │ │ ├── README_Android_UniPage.webp │ │ │ ├── 01.layout_hierarchy_tlhc.webp │ │ │ └── 01.layout_hierarchy_hc_animated.webp │ ├── analysis_options.yaml │ ├── .metadata │ ├── test │ │ └── unify_unipage_test.dart │ ├── .gitignore │ └── README.md ├── unify_uni_state │ ├── ios │ │ ├── Assets │ │ │ └── .gitkeep │ │ ├── Classes │ │ │ └── UnifyUniStatePlugin.h │ │ └── .gitignore │ ├── CHANGELOG.md │ ├── android │ │ ├── settings.gradle │ │ ├── .gitignore │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ └── com │ │ │ └── didi │ │ │ └── unify_uni_state │ │ │ ├── UniStateListener.java │ │ │ └── UniStateInterceptor.java │ ├── example │ │ ├── web │ │ │ ├── favicon.png │ │ │ └── icons │ │ │ │ ├── Icon-192.png │ │ │ │ ├── Icon-512.png │ │ │ │ ├── Icon-maskable-192.png │ │ │ │ └── Icon-maskable-512.png │ │ ├── android │ │ │ ├── gradle.properties │ │ │ ├── app │ │ │ │ └── src │ │ │ │ │ ├── main │ │ │ │ │ ├── res │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── drawable-v21 │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ └── java │ │ │ │ │ │ └── com │ │ │ │ │ │ └── didi │ │ │ │ │ │ └── unify_uni_state_example │ │ │ │ │ │ └── MainActivity.java │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ └── gradle-wrapper.properties │ │ │ └── .gitignore │ │ ├── ios │ │ │ ├── Flutter │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Runner │ │ │ │ ├── AppDelegate.h │ │ │ │ ├── Assets.xcassets │ │ │ │ │ ├── LaunchImage.imageset │ │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ ├── main.m │ │ │ │ └── AppDelegate.m │ │ │ ├── Runner.xcodeproj │ │ │ │ └── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── .gitignore │ │ └── README.md │ ├── analysis_options.yaml │ ├── README.md │ ├── .gitignore │ └── lib │ │ └── unify_uni_state_method_channel.dart └── unify_uni_api │ ├── example │ ├── 03_unicallback_demo │ │ ├── ios │ │ │ ├── Assets │ │ │ │ └── .gitkeep │ │ │ ├── Classes │ │ │ │ ├── UnicallbackDemoPlugin.h │ │ │ │ └── UFUniCallbackDispatcher.h │ │ │ └── .gitignore │ │ ├── LICENSE │ │ ├── lib │ │ │ └── uniapi │ │ │ │ ├── uni_model.dart │ │ │ │ ├── caches.dart │ │ │ │ └── uni_api.dart │ │ ├── android │ │ │ ├── settings.gradle │ │ │ ├── .gitignore │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── unicallback_demo │ │ │ │ ├── UFUniCallbackDispose.java │ │ │ │ └── UFUniCallback.java │ │ ├── CHANGELOG.md │ │ ├── example │ │ │ ├── android │ │ │ │ ├── gradle.properties │ │ │ │ ├── app │ │ │ │ │ └── src │ │ │ │ │ │ ├── main │ │ │ │ │ │ └── res │ │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ └── drawable-v21 │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ ├── debug │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ └── profile │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── gradle │ │ │ │ │ └── wrapper │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── .gitignore │ │ │ │ └── settings.gradle │ │ │ ├── ios │ │ │ │ ├── Flutter │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ └── Release.xcconfig │ │ │ │ ├── Runner │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ ├── Assets.xcassets │ │ │ │ │ │ ├── LaunchImage.imageset │ │ │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ │ ├── main.m │ │ │ │ │ ├── UniCallbackTestServiceVendor.h │ │ │ │ │ └── AppDelegate.m │ │ │ │ ├── Runner.xcodeproj │ │ │ │ │ └── project.xcworkspace │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── Runner.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── Podfile.lock │ │ │ ├── .metadata │ │ │ └── README.md │ │ ├── analysis_options.yaml │ │ ├── interface │ │ │ ├── location_info_model.dart │ │ │ └── uni_callback_test_service.dart │ │ ├── gen_uni_code.sh │ │ ├── .metadata │ │ ├── README.md │ │ └── .gitignore │ ├── 01_uninativemodule_demo │ │ ├── ios │ │ │ ├── Assets │ │ │ │ └── .gitkeep │ │ │ ├── Classes │ │ │ │ ├── UninativemoduleDemoPlugin.h │ │ │ │ └── UDUniCallbackDispatcher.h │ │ │ └── .gitignore │ │ ├── LICENSE │ │ ├── lib │ │ │ ├── uniapi │ │ │ │ ├── uni_model.dart │ │ │ │ ├── caches.dart │ │ │ │ └── uni_api.dart │ │ │ └── uninativemodule_demo.dart │ │ ├── CHANGELOG.md │ │ ├── android │ │ │ ├── settings.gradle │ │ │ ├── .gitignore │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── uninativemodule_demo │ │ │ │ ├── UDUniCallbackDispose.java │ │ │ │ └── UDUniCallback.java │ │ ├── example │ │ │ ├── android │ │ │ │ ├── gradle.properties │ │ │ │ ├── app │ │ │ │ │ └── src │ │ │ │ │ │ ├── main │ │ │ │ │ │ ├── res │ │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ │ └── drawable-v21 │ │ │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── java │ │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── uninativemodule_demo_example │ │ │ │ │ │ │ └── DeviceInfoServiceImpl.java │ │ │ │ │ │ ├── debug │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ │ └── profile │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── gradle │ │ │ │ │ └── wrapper │ │ │ │ │ │ └── gradle-wrapper.properties │ │ │ │ ├── .gitignore │ │ │ │ └── settings.gradle │ │ │ ├── ios │ │ │ │ ├── Flutter │ │ │ │ │ ├── Debug.xcconfig │ │ │ │ │ └── Release.xcconfig │ │ │ │ ├── Runner │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ ├── Assets.xcassets │ │ │ │ │ │ ├── LaunchImage.imageset │ │ │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ └── Contents.json │ │ │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ │ ├── main.m │ │ │ │ │ └── DeviceInfoServiceVendor.h │ │ │ │ ├── Runner.xcodeproj │ │ │ │ │ └── project.xcworkspace │ │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ ├── Runner.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ │ └── Podfile.lock │ │ │ ├── .metadata │ │ │ └── README.md │ │ ├── analysis_options.yaml │ │ ├── interface │ │ │ ├── device_info_service.dart │ │ │ └── device_info_model.dart │ │ ├── gen_uni_code.sh │ │ ├── README.md │ │ └── test │ │ │ └── uninativemodule_demo_test.dart │ └── 02_unifluttermodule_demo │ │ ├── ios │ │ ├── Assets │ │ │ └── .gitkeep │ │ ├── Classes │ │ │ ├── UnifluttermoduleDemoPlugin.h │ │ │ └── UFUniCallbackDispatcher.h │ │ └── .gitignore │ │ ├── LICENSE │ │ ├── lib │ │ ├── uniapi │ │ │ ├── uni_model.dart │ │ │ ├── caches.dart │ │ │ └── uni_api.dart │ │ └── unifluttermodule_demo.dart │ │ ├── CHANGELOG.md │ │ ├── android │ │ ├── settings.gradle │ │ ├── .gitignore │ │ └── src │ │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ └── java │ │ │ └── com │ │ │ └── example │ │ │ └── unifluttermodule_demo │ │ │ ├── UFUniCallbackDispose.java │ │ │ └── UFUniCallback.java │ │ ├── example │ │ ├── android │ │ │ ├── gradle.properties │ │ │ ├── app │ │ │ │ └── src │ │ │ │ │ ├── main │ │ │ │ │ └── res │ │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ └── ic_launcher.png │ │ │ │ │ │ ├── drawable │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ │ └── drawable-v21 │ │ │ │ │ │ └── launch_background.xml │ │ │ │ │ ├── debug │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ └── profile │ │ │ │ │ └── AndroidManifest.xml │ │ │ ├── gradle │ │ │ │ └── wrapper │ │ │ │ │ └── gradle-wrapper.properties │ │ │ ├── .gitignore │ │ │ └── settings.gradle │ │ ├── lib │ │ │ ├── my_event_bus.dart │ │ │ └── location_info_service_impl.dart │ │ ├── ios │ │ │ ├── Flutter │ │ │ │ ├── Debug.xcconfig │ │ │ │ └── Release.xcconfig │ │ │ ├── Runner │ │ │ │ ├── AppDelegate.h │ │ │ │ ├── Assets.xcassets │ │ │ │ │ ├── LaunchImage.imageset │ │ │ │ │ │ ├── LaunchImage.png │ │ │ │ │ │ ├── LaunchImage@2x.png │ │ │ │ │ │ ├── LaunchImage@3x.png │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ └── Contents.json │ │ │ │ │ └── AppIcon.appiconset │ │ │ │ │ │ ├── Icon-App-20x20@1x.png │ │ │ │ │ │ ├── Icon-App-20x20@2x.png │ │ │ │ │ │ ├── Icon-App-20x20@3x.png │ │ │ │ │ │ ├── Icon-App-29x29@1x.png │ │ │ │ │ │ ├── Icon-App-29x29@2x.png │ │ │ │ │ │ ├── Icon-App-29x29@3x.png │ │ │ │ │ │ ├── Icon-App-40x40@1x.png │ │ │ │ │ │ ├── Icon-App-40x40@2x.png │ │ │ │ │ │ ├── Icon-App-40x40@3x.png │ │ │ │ │ │ ├── Icon-App-60x60@2x.png │ │ │ │ │ │ ├── Icon-App-60x60@3x.png │ │ │ │ │ │ ├── Icon-App-76x76@1x.png │ │ │ │ │ │ ├── Icon-App-76x76@2x.png │ │ │ │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ │ │ └── main.m │ │ │ ├── Runner.xcodeproj │ │ │ │ └── project.xcworkspace │ │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ │ └── xcshareddata │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ ├── Runner.xcworkspace │ │ │ │ ├── contents.xcworkspacedata │ │ │ │ └── xcshareddata │ │ │ │ │ ├── WorkspaceSettings.xcsettings │ │ │ │ │ └── IDEWorkspaceChecks.plist │ │ │ └── Podfile.lock │ │ ├── .metadata │ │ └── README.md │ │ ├── analysis_options.yaml │ │ ├── interface │ │ ├── location_info_model.dart │ │ └── location_info_service.dart │ │ ├── gen_uni_code.sh │ │ ├── README.md │ │ └── test │ │ └── unifluttermodule_demo_test.dart │ ├── lib │ ├── version.dart │ ├── uni_api.dart │ ├── utils │ │ ├── template_internal │ │ │ └── dart │ │ │ │ ├── uni_model.dart │ │ │ │ ├── caches.dart │ │ │ │ └── uni_api.dart │ │ └── log.dart │ ├── analyzer │ │ ├── analyzer_error.dart │ │ ├── visitors │ │ │ ├── initializer_visitor.dart │ │ │ └── custom_type_visitor.dart │ │ └── parse_results.dart │ ├── generator │ │ ├── widgets │ │ │ ├── code_template.dart │ │ │ ├── lang │ │ │ │ └── java │ │ │ │ │ └── java_constants.dart │ │ │ ├── base │ │ │ │ └── block.dart │ │ │ ├── code_unit_mixin.dart │ │ │ └── code_unit.dart │ │ └── common.dart │ ├── cli │ │ └── cli.dart │ ├── api │ │ └── api.dart │ └── ast │ │ ├── uniapi │ │ ├── ast_model.dart │ │ └── ast_module.dart │ │ └── basic │ │ └── ast_void.dart │ ├── test │ ├── interface │ │ ├── m.dart │ │ ├── tts │ │ │ ├── model │ │ │ │ ├── audio.dart │ │ │ │ └── tts_data.dart │ │ │ ├── enum_testing_service.dart │ │ │ └── tts_service.dart │ │ ├── upgrade │ │ │ ├── model │ │ │ │ └── upgrade_data.dart │ │ │ └── upgrade_service.dart │ │ └── genericity │ │ │ ├── genericity_data.dart │ │ │ └── genericity_model.dart │ └── inputfile │ │ └── mock_input_file.dart │ ├── bin │ └── unify_flutter.dart │ ├── pubspec.yaml │ └── CHANGELOG.md ├── doc ├── public │ ├── 001.png │ ├── 002.png │ ├── 003.png │ ├── 004.png │ ├── 005.png │ ├── 006.png │ ├── 007.png │ ├── 008.png │ ├── 009.png │ ├── 010.png │ ├── 011.png │ ├── 012.png │ ├── 013.png │ ├── wx.png │ ├── uniapi.png │ ├── unify-arch.png │ ├── unify-demo.png │ ├── unify-arch-2025-05.png │ └── unify-decision-tree.png ├── 05.集成指导 │ └── README.md ├── 09.使用进阶 │ ├── README.md │ ├── 4.衍生模式.md │ └── 3.生成原生接口忽略Error参数.md ├── 08.原理概述 │ ├── 2.代码生成器.md │ ├── README.md │ ├── 5.ASTProtocol.md │ ├── 3.AST解析层.md │ └── 1.核心流程.md ├── 10.常见问题.md ├── 11.关于我们.md ├── README.md ├── 06.基础能力 │ ├── README.md │ ├── 8.泛型套娃.md │ └── 6.异常监听.md ├── 02.快速开始 │ ├── 10.总结.md │ ├── README.md │ ├── 1.前言.md │ ├── 6.定义《Flutter 向 Native 获取设备信息》接口.md │ ├── 3.安装 Unify.md │ └── 5.定义《Native 同步定位信息到 Flutter》接口.md ├── 03.安装教程.md ├── 01.项目简介.md └── 12.备注说明.md └── .gitignore /packages/unify_uni_bus/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/unify_uni_page/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/unify_uni_state/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/ios/Assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/version.dart: -------------------------------------------------------------------------------- 1 | const packageVersion = '3.0.5'; 2 | -------------------------------------------------------------------------------- /doc/public/001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/001.png -------------------------------------------------------------------------------- /doc/public/002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/002.png -------------------------------------------------------------------------------- /doc/public/003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/003.png -------------------------------------------------------------------------------- /doc/public/004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/004.png -------------------------------------------------------------------------------- /doc/public/005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/005.png -------------------------------------------------------------------------------- /doc/public/006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/006.png -------------------------------------------------------------------------------- /doc/public/007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/007.png -------------------------------------------------------------------------------- /doc/public/008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/008.png -------------------------------------------------------------------------------- /doc/public/009.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/009.png -------------------------------------------------------------------------------- /doc/public/010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/010.png -------------------------------------------------------------------------------- /doc/public/011.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/011.png -------------------------------------------------------------------------------- /doc/public/012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/012.png -------------------------------------------------------------------------------- /doc/public/013.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/013.png -------------------------------------------------------------------------------- /doc/public/wx.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/wx.png -------------------------------------------------------------------------------- /doc/public/uniapi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/uniapi.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'unify_uni_bus' 2 | -------------------------------------------------------------------------------- /packages/unify_uni_page/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'unify_uni_page' 2 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /packages/unify_uni_state/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /packages/unify_uni_state/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'unify_uni_state' 2 | -------------------------------------------------------------------------------- /doc/public/unify-arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/unify-arch.png -------------------------------------------------------------------------------- /doc/public/unify-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/unify-demo.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/LICENSE: -------------------------------------------------------------------------------- 1 | TODO: Add your license here. 2 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/uni_api.dart: -------------------------------------------------------------------------------- 1 | export 'api/api.dart'; 2 | export 'worker/worker.dart'; 3 | -------------------------------------------------------------------------------- /doc/05.集成指导/README.md: -------------------------------------------------------------------------------- 1 | * [Android端](1.Android端.md) 2 | * [iOS端](2.iOS端.md) 3 | * [Flutter端](3.Flutter端.md) -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/lib/uniapi/uni_model.dart: -------------------------------------------------------------------------------- 1 | abstract class Model {} 2 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/lib/uniapi/uni_model.dart: -------------------------------------------------------------------------------- 1 | abstract class Model {} 2 | -------------------------------------------------------------------------------- /doc/public/unify-arch-2025-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/unify-arch-2025-05.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/lib/uniapi/uni_model.dart: -------------------------------------------------------------------------------- 1 | abstract class Model {} 2 | -------------------------------------------------------------------------------- /doc/public/unify-decision-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/doc/public/unify-decision-tree.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'unicallback_demo' 2 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /packages/unify_uni_page/lib/unify_uni_page.dart: -------------------------------------------------------------------------------- 1 | export 'src/uni_page.dart'; 2 | export 'src/uni_page_controller.dart'; 3 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'uninativemodule_demo' 2 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.0.1 2 | 3 | * TODO: Describe initial release. 4 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'unifluttermodule_demo' 2 | -------------------------------------------------------------------------------- /packages/unify_uni_api/test/interface/m.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | @UniModel() 4 | class M {} 5 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/utils/template_internal/dart/uni_model.dart: -------------------------------------------------------------------------------- 1 | const dartUniModelContent = ''' 2 | abstract class Model {} 3 | '''; 4 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/web/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/web/favicon.png -------------------------------------------------------------------------------- /packages/unify_uni_page/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/09.使用进阶/README.md: -------------------------------------------------------------------------------- 1 | * [如何管理模块](1.如何管理模块.md) 2 | * [如何让生成代码包含注释](2.如何让生成代码包含注释.md) 3 | * [生成原生接口忽略Error参数](3.生成原生接口忽略Error参数.md) 4 | * [衍生模式](4.衍生模式.md) -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /doc/08.原理概述/2.代码生成器.md: -------------------------------------------------------------------------------- 1 | # 代码生成器 2 | 3 | 代码生成器主要提供Dart、Java、OC代码的生成能力。代码生成器主要有下划分: 4 | 5 | 6 | 7 | > 虚线框是生成器中提供的方法 -------------------------------------------------------------------------------- /packages/unify_uni_state/example/web/icons/Icon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/web/icons/Icon-192.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/web/icons/Icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/web/icons/Icon-512.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/lib/uniapi/caches.dart: -------------------------------------------------------------------------------- 1 | import 'uni_callback.dart'; 2 | 3 | Map uniCallbackCache = {}; 4 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/ios/Classes/UnifyUniBusPlugin.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface UnifyUniBusPlugin : NSObject 4 | @end 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .packages 3 | .idea 4 | .vscode 5 | .dart_tool/ 6 | 7 | # Conventional directory for build outputs 8 | build/ 9 | *.bkp 10 | *.dtmp -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/lib/uniapi/caches.dart: -------------------------------------------------------------------------------- 1 | import 'uni_callback.dart'; 2 | 3 | Map uniCallbackCache = {}; 4 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/lib/uniapi/caches.dart: -------------------------------------------------------------------------------- 1 | import 'uni_callback.dart'; 2 | 3 | Map uniCallbackCache = {}; 4 | -------------------------------------------------------------------------------- /packages/unify_uni_page/doc/public/00.uni_page_structure.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/doc/public/00.uni_page_structure.webp -------------------------------------------------------------------------------- /packages/unify_uni_page/doc/public/02.uni_page_lifecycle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/doc/public/02.uni_page_lifecycle.webp -------------------------------------------------------------------------------- /packages/unify_uni_page/doc/public/README_Android_Native.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/doc/public/README_Android_Native.webp -------------------------------------------------------------------------------- /packages/unify_uni_state/ios/Classes/UnifyUniStatePlugin.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface UnifyUniStatePlugin : NSObject 4 | @end 5 | -------------------------------------------------------------------------------- /doc/08.原理概述/README.md: -------------------------------------------------------------------------------- 1 | # 原理概述 2 | * [核心流程](1.核心流程.md) 3 | * [代码生成器](2.代码生成器.md) 4 | * [AST解析层](3.AST解析层.md) 5 | * [AST扩展层](4.AST扩展层.md) 6 | * [ASTProtocol](5.ASTProtocol.md) -------------------------------------------------------------------------------- /doc/10.常见问题.md: -------------------------------------------------------------------------------- 1 | # 常见问题 2 | 3 | 1. 模板文件命名和模板类名不一致时,出现下报错 4 | 5 | 6 | **解决方式**:修改模板文件名或者类名,让这二者`名称内容`保持一样(`_`不计入名称内容),重新执行代码生成脚本。 -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_page/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/doc/public/README_Android_UniPage.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/doc/public/README_Android_UniPage.webp -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_page/doc/public/01.layout_hierarchy_tlhc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/doc/public/01.layout_hierarchy_tlhc.webp -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/web/icons/Icon-maskable-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/web/icons/Icon-maskable-192.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/web/icons/Icon-maskable-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/web/icons/Icon-maskable-512.png -------------------------------------------------------------------------------- /doc/11.关于我们.md: -------------------------------------------------------------------------------- 1 | # 关于我们 2 | 3 | 我们来自滴滴外卖国际化终端团队。我们是一支专注于深度使用Flutter技术的团队,对Flutter技术有着深入的研究和应用,基于Flutter技术的优势,我们开发出高效、稳定、易用的移动应用,使得团队人效提升了30%+。 4 | 5 | 如果你觉 Unify 对你有用,欢迎大家使用和一起交流~ -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/lib/my_event_bus.dart: -------------------------------------------------------------------------------- 1 | import 'package:event_bus/event_bus.dart'; 2 | 3 | final EventBus myEventBus = EventBus(); 4 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /packages/unify_uni_page/doc/public/01.layout_hierarchy_hc_animated.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/doc/public/01.layout_hierarchy_hc_animated.webp -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /packages/unify_uni_api/test/interface/tts/model/audio.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | @UniModel() 4 | class Audio { 5 | String? data; 6 | int? size; 7 | } 8 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .cxx 10 | -------------------------------------------------------------------------------- /packages/unify_uni_state/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .cxx 10 | -------------------------------------------------------------------------------- /packages/unify_uni_state/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/ios/Classes/UnicallbackDemoPlugin.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface UnicallbackDemoPlugin : NSObject 4 | @end 5 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/android/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/utils/template_internal/dart/caches.dart: -------------------------------------------------------------------------------- 1 | const dartCachesContent = """ 2 | import 'uni_callback.dart'; 3 | 4 | Map uniCallbackCache = {}; 5 | """; 6 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/ios/Classes/UninativemoduleDemoPlugin.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface UninativemoduleDemoPlugin : NSObject 4 | @end 5 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_api/test/interface/upgrade/model/upgrade_data.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | @UniModel() 4 | class UpgradeData { 5 | String? data; 6 | int? size; 7 | } 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/ios/Classes/UnifluttermoduleDemoPlugin.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface UnifluttermoduleDemoPlugin : NSObject 4 | @end 5 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/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 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_page/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 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_state/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 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /doc/08.原理概述/5.ASTProtocol.md: -------------------------------------------------------------------------------- 1 | # AST协议层 2 | 3 | Unify 约定的抽象语法树协议,主要以`AstNode`的派生类进行体现,如下图: 4 | 5 | 6 | 7 | 一个 Dart 文件经过 Analyzer 解析后,结果数据最终要转化成 Unify 中`AstType`或`UniApiNode`类型对象。 -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /doc/08.原理概述/3.AST解析层.md: -------------------------------------------------------------------------------- 1 | # AST解析层 2 | 3 | 主要是对 [Analyzer](https://github.com/dart-lang/sdk/tree/main/pkg/analyzer/doc/tutorial) 框架的应用封装,涉及到的知识点如下图: 4 | 5 | 6 | 7 | 想了解具体实现的细节,建议查看代码实现。 -------------------------------------------------------------------------------- /packages/unify_uni_state/android/src/main/java/com/didi/unify_uni_state/UniStateListener.java: -------------------------------------------------------------------------------- 1 | package com.didi.unify_uni_state; 2 | 3 | public interface UniStateListener { 4 | void onStateChanged(Object state); 5 | } 6 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/android/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /packages/unify_uni_api/test/interface/genericity/genericity_data.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | @UniModel() 4 | class GenericityData { 5 | List?>>?>>? a; 6 | } 7 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/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 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/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 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/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 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_page/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_state/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/utils/log.dart: -------------------------------------------------------------------------------- 1 | const debug = false; 2 | 3 | void log(String content, {dynamic value = ''}) { 4 | if (debug) { 5 | printf('$content ==> $value'); 6 | } 7 | } 8 | 9 | void printf(Object? content) => print(content); 10 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/test/interface/tts/enum_testing_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | import 'model/tts_data.dart'; 4 | 5 | @UniNativeModule() 6 | abstract class EnumTestingService { 7 | void testField(TtsData data); 8 | } 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/test/interface/upgrade/upgrade_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | import 'model/upgrade_data.dart'; 4 | 5 | @UniNativeModule() 6 | abstract class UpgradeService { 7 | void upgrade(UpgradeData data); 8 | } 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | @interface AppDelegate : FlutterAppDelegate 5 | @property (nonatomic, strong) dispatch_source_t timer; 6 | @end 7 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/bin/unify_flutter.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/cli/cli.dart'; 2 | import 'package:unify_flutter/utils/log.dart'; 3 | 4 | Future main(List arguments) async { 5 | log('arguments', value: arguments); 6 | await cli(arguments); 7 | } 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/main/java/com/didi/unify_uni_page_example/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.didi.unify_uni_page_example; 2 | 3 | import io.flutter.embedding.android.FlutterActivity; 4 | 5 | public class MainActivity extends FlutterActivity { 6 | } 7 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/test/interface/tts/model/tts_data.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | import 'audio.dart'; 4 | 5 | @UniModel() 6 | 7 | /// 注释:存储TTS数据内容 8 | class TtsData { 9 | /// 注释:TTS文件名称 10 | String? name; 11 | Audio? audio; 12 | } 13 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/main/java/com/didi/unify_uni_state_example/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.didi.unify_uni_state_example; 2 | 3 | import io.flutter.embedding.android.FlutterActivity; 4 | 5 | public class MainActivity extends FlutterActivity { 6 | } 7 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/interface/location_info_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | /// 定位经纬度信息 实体类 4 | @UniModel() 5 | class LocationInfoModel { 6 | /// 纬度 7 | double? lat; 8 | 9 | /// 经度 10 | double? lng; 11 | } 12 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/interface/location_info_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | /// 定位经纬度信息 实体类 4 | @UniModel() 5 | class LocationInfoModel { 6 | /// 纬度 7 | double? lat; 8 | 9 | /// 经度 10 | double? lng; 11 | } 12 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /packages/unify_uni_api/test/interface/tts/tts_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | import 'model/tts_data.dart'; 4 | 5 | @UniNativeModule() 6 | abstract class TtsService { 7 | /// 方法注释:播放 8 | void playTts(TtsData? data); 9 | 10 | int version(); 11 | } 12 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 6 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStoreBase=GRADLE_USER_HOME 4 | zipStorePath=wrapper/dists 5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip 6 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/interface/device_info_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | import 'device_info_model.dart'; 3 | 4 | @UniNativeModule() 5 | abstract class DeviceInfoService { 6 | /// 获取设备信息 7 | Future getDeviceInfo(); 8 | } 9 | -------------------------------------------------------------------------------- /doc/README.md: -------------------------------------------------------------------------------- 1 | * [项目简介](01.项目简介.md) 2 | * [快速开始](02.快速开始) 3 | * [安装教程](03.安装教程.md) 4 | * [CLI使用教程](04.CLI 使用教程.md) 5 | * [集成指导](05.集成指导.md) 6 | * [基础能力](06.基础能力) 7 | * [架构设计](07.架构设计.md) 8 | * [原理概述](08.原理概述) 9 | * [使用进阶](09.使用进阶) 10 | * [常见问题](10.常见问题.md) 11 | * [关于我们](11.关于我们.md) 12 | * [备注说明](12.备注说明.md) -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/didi/Unify/HEAD/packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /packages/unify_uni_state/android/src/main/java/com/didi/unify_uni_state/UniStateInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.didi.unify_uni_state; 2 | 3 | public abstract class UniStateInterceptor { 4 | public void set(String stateKey, Object stateValue) {} 5 | 6 | public abstract Object get(String stateKey); 7 | } 8 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/UniPageDemo.h: -------------------------------------------------------------------------------- 1 | // 2 | // UniPageDemo.h 3 | // Runner 4 | // 5 | // Created by jerry on 2024/7/16. 6 | // 7 | 8 | #import "UniPage.h" 9 | 10 | NS_ASSUME_NONNULL_BEGIN 11 | 12 | @interface UniPageDemo : UniPage 13 | 14 | @end 15 | 16 | NS_ASSUME_NONNULL_END 17 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/interface/location_info_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | import 'location_info_model.dart'; 3 | 4 | @UniFlutterModule() 5 | abstract class LocationInfoService { 6 | /// 更新定位信息 7 | void updateLocationInfo(LocationInfoModel model); 8 | } 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip 7 | -------------------------------------------------------------------------------- /doc/09.使用进阶/4.衍生模式.md: -------------------------------------------------------------------------------- 1 | # 衍生模式 2 | 在跨端场景中,仍然适合复用原则,避免重复造轮子。以 Unify 为底座,结合实践,我们得出下面的衍生模式: 3 | 4 | 5 | 6 | * **Uni_Foundation**:平台基建 SDK 能力导入 Flutter 的桥接聚合层,多个不同业务线均可以使用,大家可以共建。 7 | * **Uni_Business**:业务线自身特有能力导入 Flutter 的桥接聚合层,业务团队内部使用,团队内部自建。 8 | 9 | 如果您也有类似的场景,可以尝试这种模式,人效将会有所提升。 10 | 11 | 12 | -------------------------------------------------------------------------------- /doc/06.基础能力/README.md: -------------------------------------------------------------------------------- 1 | # 基础能力 2 | 3 | * [UniModel](1.UniModel.md) 4 | * [UniNativeModule](2.UniNativeModule.md) 5 | * [UniFlutterModule](3.UniFlutterModule.md) 6 | * [IgnoreError](4.IgnoreError.md) 7 | * [UniApi](5.UniApi.md) 8 | * [异常监听](6.异常监听.md) 9 | * [定义同步异步接口](7.定义同步异步接口.md) 10 | * [泛型套娃](8.泛型套娃.md) 11 | * [支持的数据类型](9.支持的数据类型.md) -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/interface/device_info_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | /// 设备信息 实体类 4 | @UniModel() 5 | class DeviceInfoModel { 6 | /// 系统版本 7 | String? osVersion; 8 | 9 | /// 内存信息 10 | String? memory; 11 | 12 | /// 手机型号 13 | String? plaform; 14 | } 15 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char* argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip 7 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip 7 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip 7 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /doc/02.快速开始/10.总结.md: -------------------------------------------------------------------------------- 1 | 2 | # 总结 3 | 以上便是使用 Unify 的一个完整例子。如果后续需要更多的通用能力,只需要在 Unify 宿主工程的 **interface** 目录中,不断的创建 Unify 模板文件就可以了。 4 | 5 | 待新加的模板文件创建好后,执行脚本 **gen\_uni\_code.sh** ,即可生成代码。 6 | 7 | 参照 [使用进阶-衍生模式章节](../9.使用进阶/4.衍生模式.md) 的介绍,也可以创建针对特定业务使用的 Uni_Business,开发方式和前面的`示例`是一样的。 8 | 9 | Uni_Business 和 Uni_Foundation 这样的使用了 Unify 的插件,并不局限于1个,可以根据自己的实际需要,创建N个这样的 Flutter 插件。 -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/gen_uni_code.sh: -------------------------------------------------------------------------------- 1 | dart run unify_flutter api\ 2 | --input=`pwd`/interface \ 3 | --dart_out=`pwd`/lib \ 4 | --java_out=`pwd`/android/src/main/java/com/example/unicallback_demo \ 5 | --java_package=com.example.unicallback_demo \ 6 | --oc_out=`pwd`/ios/Classes \ 7 | --dart_null_safety=true \ 8 | --uniapi_prefix=UF -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/ios/Classes/UnifyUniPagePlugin.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface UnifyUniPagePlugin : NSObject 4 | 5 | /// 注册 UniPage 类 6 | /// - Parameters: 7 | /// - clsName: UniPage 派生类 8 | /// - pageType: 对齐 Flutter 的 viewType 9 | + (void)registerUniPage:(Class)clsName viewType:(NSString*)viewType; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/gen_uni_code.sh: -------------------------------------------------------------------------------- 1 | dart run unify_flutter api\ 2 | --input=`pwd`/interface \ 3 | --dart_out=`pwd`/lib \ 4 | --java_out=`pwd`/android/src/main/java/com/example/uninativemodule_demo \ 5 | --java_package=com.example.uninativemodule_demo \ 6 | --oc_out=`pwd`/ios/Classes \ 7 | --dart_null_safety=true \ 8 | --uniapi_prefix=UD -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /doc/03.安装教程.md: -------------------------------------------------------------------------------- 1 | # Unify 安装 2 | 如果你想使用`Unify`,只需要在你的 Flutter 工程添加`unify`依赖,添加方式参考下文。 3 | 4 | ### 命令方式 5 | `cd`到 Flutter 工程的根路径下,执行下面命令: 6 | ```shell 7 | $ dart pub add unify --dev 8 | ``` 9 | 10 | ### yaml文件方式 11 | 在 Flutter 工程的`pubspec.yaml`中添加以下内容: 12 | 13 | ```yaml 14 | dev_dependencies: 15 | unify: xxx 16 | ``` 17 | 完成上面的操作后,触发`dart pub get`或者`flutter pub get`,即可完成`Unify`的安装。 -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/gen_uni_code.sh: -------------------------------------------------------------------------------- 1 | dart run unify_flutter api\ 2 | --input=`pwd`/interface \ 3 | --dart_out=`pwd`/lib \ 4 | --java_out=`pwd`/android/src/main/java/com/example/unifluttermodule_demo \ 5 | --java_package=com.example.unifluttermodule_demo \ 6 | --oc_out=`pwd`/ios/Classes \ 7 | --dart_null_safety=true \ 8 | --uniapi_prefix=UF -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/.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 and should not be manually edited. 5 | 6 | version: 7 | revision: 5464c5bac742001448fe4fc0597be939379f88ea 8 | channel: stable 9 | 10 | project_type: plugin 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_page/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 and should not be manually edited. 5 | 6 | version: 7 | revision: 5464c5bac742001448fe4fc0597be939379f88ea 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/analyzer/analyzer_error.dart: -------------------------------------------------------------------------------- 1 | class Error { 2 | Error({ 3 | required this.message, 4 | this.filename, 5 | this.lineNumber, 6 | }); 7 | 8 | String message; 9 | 10 | String? filename; 11 | 12 | int? lineNumber; 13 | 14 | @override 15 | String toString() => 16 | '(Error message:"$message" filename:"$filename" lineNumber:$lineNumber)'; 17 | } 18 | -------------------------------------------------------------------------------- /packages/unify_uni_api/test/interface/genericity/genericity_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | 3 | import 'genericity_data.dart'; 4 | 5 | @UniModel() 6 | class GenericityModel { 7 | List? a; 8 | Map?>? b; 9 | List?>>? c; 10 | List?>>?>>? d; 11 | int? e; 12 | } 13 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/.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 and should not be manually edited. 5 | 6 | version: 7 | revision: 5464c5bac742001448fe4fc0597be939379f88ea 8 | channel: stable 9 | 10 | project_type: plugin 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/generator/widgets/code_template.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/generator/widgets/code_unit.dart'; 2 | 3 | class CodeTemplate extends CodeUnit { 4 | CodeTemplate({ 5 | this.children = const [], 6 | }) : super(0); 7 | 8 | List children; 9 | 10 | @override 11 | String build() { 12 | return children.map((cu) => cu.build()).join(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/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 and should not be manually edited. 5 | 6 | version: 7 | revision: 5464c5bac742001448fe4fc0597be939379f88ea 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/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 and should not be manually edited. 5 | 6 | version: 7 | revision: 5464c5bac742001448fe4fc0597be939379f88ea 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /doc/08.原理概述/1.核心流程.md: -------------------------------------------------------------------------------- 1 | # 核心流程 2 | Unify 在被`flutter pub run unify_flutter`命令触发运行后,它的核心运行流程可参考下图: 3 | 4 | 5 | 6 | * `CLI Isolate`:Unify 运行的`mian Isolate`,主要是执行`main()`函数中的逻辑。 7 | * `Worker Isolate`:由`main()`函数执行后,新创建的`Isolate`,主要触发`AST解析引擎`解析 Unify 模板和结果回收。 8 | * `AST解析引擎`:主要对 Analyzer 库的封装和应用。 9 | * `AstVisitor`:主要重写 Analyzer 定义的协议,进行AST结果解析。将解析结果转换成”Unify 约定的抽象语法树协议“,即:`AstNode`的派生类对象。 -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/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 and should not be manually edited. 5 | 6 | version: 7 | revision: 5464c5bac742001448fe4fc0597be939379f88ea 8 | channel: stable 9 | 10 | project_type: app 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | **/*.keystore 13 | **/*.jks 14 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/unify_uni_page/android/src/main/java/com/didi/unify_uni_page/AbsUniPageFactoryListener.java: -------------------------------------------------------------------------------- 1 | package com.didi.unify_uni_page; 2 | 3 | import android.content.Context; 4 | 5 | import androidx.annotation.Nullable; 6 | 7 | public interface AbsUniPageFactoryListener { 8 | void onPlatformViewCreate(Context context, int viewId, @Nullable Object args); 9 | 10 | void onPlatformViewDispose(Context context, int viewId); 11 | } 12 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/DeviceInfoServiceVendor.h: -------------------------------------------------------------------------------- 1 | // 2 | // DeviceInfoServiceVendor.h 3 | // Runner 4 | // 5 | // Created by jerry on 2023/10/8. 6 | // 7 | 8 | #import 9 | #import "DeviceInfoService.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface DeviceInfoServiceVendor : NSObject 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/cli/cli.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | import 'dart:io'; 3 | 4 | import 'package:unify_flutter/cli/unify_command_runner.dart'; 5 | 6 | Future cli(List args) async { 7 | await _runAndExit(await UnifyCommandRunner().run(args)); 8 | } 9 | 10 | Future _runAndExit(int status) { 11 | return Future.wait([stdout.close(), stderr.close()]) 12 | .then((_) => exit(status)); 13 | } 14 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/android/src/main/java/com/example/unicallback_demo/UFUniCallbackDispose.java: -------------------------------------------------------------------------------- 1 | // ================================================= 2 | // Autogenerated from Unify 3.0.4, do not edit directly. 3 | // ================================================= 4 | 5 | package com.example.unicallback_demo; 6 | 7 | public interface UFUniCallbackDispose { 8 | void disposeCallback(UFUniCallback uniCallback); 9 | } 10 | 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /doc/02.快速开始/README.md: -------------------------------------------------------------------------------- 1 | # 一个完整的 Unify 应用示例 2 | 3 | * [前言](1.前言.md) 4 | * [创建 Unify 宿主工程](2.创建 Unify 宿主工程.md) 5 | * [安装 Unify](3.安装 Unify.md) 6 | * [定义 Model 类](4.定义 Model 类.md) 7 | * [定义《Native 同步定位信息到 Flutter》接口](5.定义《Native 同步定位信息到 Flutter》接口.md) 8 | * [定义《Flutter 向 Native 获取设备信息》接口](6.定义《Flutter 向 Native 获取设备信息》接口.md) 9 | * [触发自动生成代码](7.触发自动生成代码.md) 10 | * [App 接入《监听手机定位》能力](8.App 接入《监听手机定位》能力.md) 11 | * [App 接入《设备信息获取》能力](9.App 接入《设备信息获取》能力.md) 12 | * [总结](10.总结.md) -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/lib/uninativemodule_demo.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'dart:async'; 3 | 4 | import 'package:flutter/services.dart'; 5 | 6 | class UninativemoduleDemo { 7 | static const MethodChannel _channel = MethodChannel('uninativemodule_demo'); 8 | 9 | static Future get platformVersion async { 10 | final String? version = await _channel.invokeMethod('getPlatformVersion'); 11 | return version; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/lib/unifluttermodule_demo.dart: -------------------------------------------------------------------------------- 1 | 2 | import 'dart:async'; 3 | 4 | import 'package:flutter/services.dart'; 5 | 6 | class UnifluttermoduleDemo { 7 | static const MethodChannel _channel = MethodChannel('unifluttermodule_demo'); 8 | 9 | static Future get platformVersion async { 10 | final String? version = await _channel.invokeMethod('getPlatformVersion'); 11 | return version; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/interface/uni_callback_test_service.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/api/api.dart'; 2 | import 'package:unicallback_demo/uniapi/uni_callback.dart'; 3 | import 'location_info_model.dart'; 4 | 5 | @UniNativeModule() 6 | abstract class UniCallbackTestService { 7 | /// 更新定位信息 8 | void doCallbackAction0(UniCallback callback); 9 | 10 | void doCallbackAction1(UniCallback callback); 11 | } 12 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/android/src/main/java/com/example/uninativemodule_demo/UDUniCallbackDispose.java: -------------------------------------------------------------------------------- 1 | // ================================================= 2 | // Autogenerated from Unify 3.0.4, do not edit directly. 3 | // ================================================= 4 | 5 | package com.example.uninativemodule_demo; 6 | 7 | public interface UDUniCallbackDispose { 8 | void disposeCallback(UDUniCallback uniCallback); 9 | } 10 | 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/android/src/main/java/com/example/unifluttermodule_demo/UFUniCallbackDispose.java: -------------------------------------------------------------------------------- 1 | // ================================================= 2 | // Autogenerated from Unify 3.0.4, do not edit directly. 3 | // ================================================= 4 | 5 | package com.example.unifluttermodule_demo; 6 | 7 | public interface UFUniCallbackDispose { 8 | void disposeCallback(UFUniCallback uniCallback); 9 | } 10 | 11 | -------------------------------------------------------------------------------- /packages/unify_uni_api/pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: unify_flutter 2 | description: An efficient, flexible Flutter-Native hybrid communication framework for seamless module integration and automatic code generation. 3 | version: 3.0.5 4 | homepage: https://github.com/didi/Unify 5 | 6 | environment: 7 | sdk: '>=3.0.0 <4.0.0' 8 | 9 | dependencies: 10 | args: ^2.3.0 11 | analyzer: ^7.4.6 12 | path: ^1.8.0 13 | 14 | dev_dependencies: 15 | lints: ^5.1.1 16 | test: ^1.19.4 17 | -------------------------------------------------------------------------------- /doc/06.基础能力/8.泛型套娃.md: -------------------------------------------------------------------------------- 1 | # 泛型套娃 2 | 在开始讲述本节内容之前,我们先看一段 UniModel 的模板代码: 3 | 4 | ```javascript 5 | import 'package:unify/api/api.dart'; 6 | 7 | @UniModel() 8 | class GenericityData { 9 | List?>>?>>? a; 10 | } 11 | ``` 12 | 13 | `GenericityData`中的属性`a`被声明成:看着都让人头晕的泛型,`List`类型。像这种泛型声明我们称作`泛型套娃`。 14 | 15 | 虽然,我们很不建议用户定义`泛型套娃`式的变量。但难免会有浅层级的`泛型嵌套`出现。 16 | 17 | 针对`泛型套娃`现象,Unify 在生成代码时,会自动增加`泛型套娃`处理的代码逻辑。即使是较复杂的泛型嵌套场景,不管嵌套层级有多深,各层级的数据类型均可以自动进行转换与还原。 18 | 19 | 用户只关心定义和使用这些自定义的 Model 即可。 -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/UniCallbackTestServiceVendor.h: -------------------------------------------------------------------------------- 1 | // 2 | // UniCallbackTestServiceVendor.h 3 | // Runner 4 | // 5 | // Created by jerry on 2024/5/8. 6 | // 7 | 8 | #import 9 | #import "UniCallbackTestService.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UniCallbackTestServiceVendor : NSObject 14 | @property (nonatomic, strong) dispatch_source_t timer; 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/analyzer/visitors/initializer_visitor.dart: -------------------------------------------------------------------------------- 1 | import 'package:analyzer/dart/ast/ast.dart' as dart_ast; 2 | import 'package:unify_flutter/analyzer/visitors/base_ast_visitor.dart'; 3 | 4 | class InitializerVisitor extends BaseAstVisitor { 5 | dart_ast.Expression? initializer; 6 | @override 7 | Object? visitVariableDeclaration(dart_ast.VariableDeclaration node) { 8 | if (node.initializer != null) { 9 | initializer = node.initializer; 10 | } 11 | return null; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | #import "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /packages/unify_uni_api/test/inputfile/mock_input_file.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/utils/file/input_file.dart'; 2 | 3 | const mockProjectPath = 4 | '/Users/jerry/work/iOS/rider.ios.flutter/uni_api_test/interface/'; 5 | const mockJavaPackageName = 'com.uniapi'; 6 | const mockDartOutput = '/lib/'; 7 | 8 | /// 生成 mock input file 9 | /// path: file 相对路径 10 | InputFile mockInputFile(String path) { 11 | final absolutePath = '$mockProjectPath$path'; 12 | return InputFile(path: path, absolutePath: absolutePath); 13 | } 14 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/main/java/com/didi/unify_uni_page_example/NativeActivity.java: -------------------------------------------------------------------------------- 1 | package com.didi.unify_uni_page_example; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import androidx.annotation.Nullable; 7 | 8 | public class NativeActivity extends Activity { 9 | @Override 10 | protected void onCreate(@Nullable Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.uni_page_demo); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/unify_uni_page/test/unify_unipage_test.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/services.dart'; 2 | import 'package:flutter_test/flutter_test.dart'; 3 | 4 | void main() { 5 | const MethodChannel channel = MethodChannel('unify_uni_page'); 6 | 7 | TestWidgetsFlutterBinding.ensureInitialized(); 8 | 9 | setUp(() { 10 | channel.setMockMethodCallHandler((MethodCall methodCall) async { 11 | return '42'; 12 | }); 13 | }); 14 | 15 | tearDown(() { 16 | channel.setMockMethodCallHandler(null); 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/AppDelegate.m: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | #import "GeneratedPluginRegistrant.h" 3 | 4 | @implementation AppDelegate 5 | 6 | - (BOOL)application:(UIApplication *)application 7 | didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 8 | [GeneratedPluginRegistrant registerWithRegistry:self]; 9 | // Override point for customization after application launch. 10 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 11 | } 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/generator/widgets/lang/java/java_constants.dart: -------------------------------------------------------------------------------- 1 | const String keywordPublic = 'public'; 2 | const String keywordPrivate = 'private'; 3 | const String keywordStatic = 'static'; 4 | const String keywordClass = 'class'; 5 | const String keywordInterface = 'interface'; 6 | const String keywordExtends = 'extends'; 7 | const String keywordParenthesesLeft = '('; 8 | const String keywordParenthesesRight = ')'; 9 | const String keywordBraceLeft = '{'; 10 | const String keywordBraceRight = '}'; 11 | const String keywordSpace = ' '; 12 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/lib/location_info_service_impl.dart: -------------------------------------------------------------------------------- 1 | import 'package:unifluttermodule_demo/location_info_model.dart'; 2 | import 'package:unifluttermodule_demo/location_info_service.dart'; 3 | import 'package:unifluttermodule_demo_example/my_event_bus.dart'; 4 | 5 | class LocationInfoServiceImpl extends LocationInfoService { 6 | @override 7 | void updateLocationInfo(LocationInfoModel model) { 8 | // TODO: implement updateLocationInfo 9 | myEventBus.fire(model.encode().toString()); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/api/api.dart: -------------------------------------------------------------------------------- 1 | class UniFlutterModule { 2 | const UniFlutterModule(); 3 | } 4 | 5 | class UniNativeModule { 6 | const UniNativeModule(); 7 | } 8 | 9 | class UniModel { 10 | const UniModel(); 11 | } 12 | 13 | class IgnoreError { 14 | const IgnoreError(); 15 | } 16 | 17 | /// In "UniFlutterModule" mode, the interface parameters 18 | /// are by default added with "Binary Messenger". 19 | /// 20 | /// Important: It can only be used in UniFlutterModule mode. 21 | class RequiredMessager { 22 | const RequiredMessager(); 23 | } 24 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_state/README.md: -------------------------------------------------------------------------------- 1 | # unify_uni_state 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 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /doc/06.基础能力/6.异常监听.md: -------------------------------------------------------------------------------- 1 | # 异常监听 2 | 3 | 这个教程将为你讲解如何在 Flutter 端监听 Unify 自动生成代码中的异常。 4 | 5 | # 功能介绍 6 | 7 | Unify 允许用户通过注入的方式捕获异常结果。然后,自行决策异常是否上报到监控平台。为此,Flutter 端的 [UniAPI 类](5.UniApi.md) 提供了**类方法**: 8 | 9 | ```javascript 10 | static void setErrorTrackCallback(Function(String moduleName, String channel, String error) newCallback); 11 | ``` 12 | `setErrorTrackCallback`方法接收一个`Function`类型参数,用于 Unify 出现异常时进行回调。 13 | 14 | 这个`Function`回调函数,包含以下参数: 15 | 16 | | 参数 | 表示意义 | 17 | | ------ | ------ | 18 | |moduleName|异常发生模块的名称| 19 | |channel|发生异常所使用的Channel名称| 20 | |error|异常堆栈的错误信息| 21 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/README.md: -------------------------------------------------------------------------------- 1 | # unicallback_demo 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, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | 16 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/README.md: -------------------------------------------------------------------------------- 1 | # uninativemodule_demo 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, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | 16 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/README.md: -------------------------------------------------------------------------------- 1 | # unifluttermodule_demo 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, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | 16 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/unify_uni_page/lib/src/constants.dart: -------------------------------------------------------------------------------- 1 | const String kUniPageChannel = 'com.didi.unify.uni_page'; 2 | const String kChannelRoutePushNamed = 'pushNamed'; 3 | const String kChannelRoutePop = 'pop'; 4 | const String kChannelInvoke = 'invoke'; 5 | 6 | const String kChannelParamsPath = 'path'; 7 | const String kChannelParamsPrams = 'params'; 8 | 9 | const String kChannelViewType = 'viewType'; 10 | const String kChannelViewId = 'viewId'; 11 | const String kChannelMethodName = 'methodName'; 12 | 13 | String createChannelName(String viewType, int viewId) { 14 | return '$kUniPageChannel.$viewType.$viewId'; 15 | } 16 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/Generated.xcconfig 37 | /Flutter/ephemeral/ 38 | /Flutter/flutter_export_environment.sh -------------------------------------------------------------------------------- /packages/unify_uni_page/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/Generated.xcconfig 37 | /Flutter/ephemeral/ 38 | /Flutter/flutter_export_environment.sh -------------------------------------------------------------------------------- /packages/unify_uni_state/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/Generated.xcconfig 37 | /Flutter/ephemeral/ 38 | /Flutter/flutter_export_environment.sh -------------------------------------------------------------------------------- /doc/09.使用进阶/3.生成原生接口忽略Error参数.md: -------------------------------------------------------------------------------- 1 | # 忽略原生接口的Error信息 2 | 针对使用[@UniNativeModule()](../06.基础能力/2.UniNativeModule.md)的模板,Unify 在生成原生代码时,默认会增加[错误信息捕获逻辑](../06.基础能力/4.IgnoreError.md#特别说明)。如果不关注错误信息的话,可以给`协议接口`添加[@IgnoreError()](../06.基础能力/4.IgnoreError.md)。 3 | 4 | 比如上节`location_info_service.dart`,若忽略Error,可以这样修改模板: 5 | 6 | ```dart 7 | import 'package:unify/api/api.dart'; 8 | import 'device_info_model.dart'; 9 | 10 | @UniNativeModule() 11 | abstract class DeviceInfoService { 12 | /// 获取设备信息 13 | @IgnoreError() 14 | Future getDeviceInfo(); 15 | } 16 | ``` 17 | 18 | > `@IgnoreError()`是可选选项,可根据自身需求决定是否增加此注解。 -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/analyzer/parse_results.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/ast/uniapi/ast_model.dart'; 2 | import 'package:unify_flutter/ast/uniapi/ast_module.dart'; 3 | 4 | class ParseResults { 5 | ParseResults( 6 | {required this.models, 7 | required this.flutterModules, 8 | required this.nativeModules}); 9 | 10 | List models; 11 | List flutterModules; 12 | List nativeModules; 13 | 14 | @override 15 | String toString() => 16 | 'models:"${models.toString()}" \n flutterModules:"${flutterModules.toString()}" \n nativeModules:"${nativeModules.toString()}"'; 17 | } 18 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/generator/widgets/base/block.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/generator/widgets/base/line.dart'; 2 | import 'package:unify_flutter/generator/widgets/code_unit.dart'; 3 | import 'package:unify_flutter/generator/widgets/lang/java/java_class.dart'; 4 | 5 | class ScopeBlock extends CodeUnit { 6 | ScopeBlock({int depth = 0, this.body}) : super(depth); 7 | 8 | InjectCodeUnit? body; 9 | 10 | @override 11 | String build() => CodeUnit.join([ 12 | OneLine(depth: depth, body: '{'), 13 | if (body != null) ...body!(depth + 1), 14 | OneLine(depth: depth, body: '}') 15 | ]); 16 | } 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/generator/widgets/code_unit_mixin.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/analyzer/analyzer_lib.dart'; 2 | import 'package:unify_flutter/ast/uniapi/ast_model.dart'; 3 | import 'package:unify_flutter/generator/widgets/code_unit.dart'; 4 | 5 | mixin CodeUnitMixin on CodeUnit { 6 | List collectModels(List names) { 7 | final models = []; 8 | for (final element in names) { 9 | models.addAll(UniApiAnalyzer.allModels() 10 | ?.where((model) => model.name == element) 11 | .toList() ?? 12 | []); 13 | } 14 | 15 | return models; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/Generated.xcconfig 37 | /Flutter/ephemeral/ 38 | /Flutter/flutter_export_environment.sh -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/Generated.xcconfig 37 | /Flutter/ephemeral/ 38 | /Flutter/flutter_export_environment.sh -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/ios/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vagrant/ 3 | .sconsign.dblite 4 | .svn/ 5 | 6 | .DS_Store 7 | *.swp 8 | profile 9 | 10 | DerivedData/ 11 | build/ 12 | GeneratedPluginRegistrant.h 13 | GeneratedPluginRegistrant.m 14 | 15 | .generated/ 16 | 17 | *.pbxuser 18 | *.mode1v3 19 | *.mode2v3 20 | *.perspectivev3 21 | 22 | !default.pbxuser 23 | !default.mode1v3 24 | !default.mode2v3 25 | !default.perspectivev3 26 | 27 | xcuserdata 28 | 29 | *.moved-aside 30 | 31 | *.pyc 32 | *sync/ 33 | Icon? 34 | .tags* 35 | 36 | /Flutter/Generated.xcconfig 37 | /Flutter/ephemeral/ 38 | /Flutter/flutter_export_environment.sh -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/generator/widgets/code_unit.dart: -------------------------------------------------------------------------------- 1 | // 代码的基本单元 2 | abstract class CodeUnit { 3 | CodeUnit(this.depth); 4 | 5 | static const space = ' '; 6 | static const newLine = '\n'; 7 | static const tab = ' '; 8 | 9 | final int depth; 10 | 11 | static String join(List parts, {String separator = ''}) { 12 | return parts.map((p) => p.build()).join(separator); 13 | } 14 | 15 | String depthTabs() { 16 | final sb = StringBuffer(); 17 | for (var i = 0; i < depth; i++) { 18 | sb.write(tab); 19 | } 20 | return sb.toString(); 21 | } 22 | 23 | // 生成当前代码单元的字符串 24 | String build(); 25 | } 26 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/lib/uniapi/uni_api.dart: -------------------------------------------------------------------------------- 1 | class UniApi { 2 | static Function(String moduleName, String channel, String error)? _errorTrackCallback = (String moduleName, String channel, String error) { 3 | print(error); 4 | }; 5 | 6 | static void setErrorTrackCallback(Function(String moduleName, String channel, String error)? newCallback) { 7 | if (newCallback == null) { 8 | return; 9 | } 10 | _errorTrackCallback = newCallback; 11 | } 12 | 13 | static void trackError(String moduleName, String channel, String error) { 14 | _errorTrackCallback?.call(moduleName, channel, error); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /doc/02.快速开始/1.前言.md: -------------------------------------------------------------------------------- 1 | # 前言 2 | 3 | 本章节用一个实际的示例来讲述如何使用 **Unify**。这个示例的主要目标: 4 | 5 | * 了解 **Unify 插件**的开发流程,涉及: 6 | * 自定义实体 7 | * Flutter 调用原生 8 | * 原生调用 Flutter 9 | 10 | 我们借助创建 Flutter Plugin 工程时,官方自动动创建的 example 工程作为 App 的骨架,进行 Unify 应用和调试。我们以实现以下功能为例: 11 | 12 | 1. 监听手机定位,定位有更新后,主动将经纬度坐标同步到 Flutter。 13 | 2. Flutter 要获取手机设备参数:系统版本、内存信息、手机型号。 14 | 15 | 要实现上面能力会涉及到如下技术点: 16 | 17 | 1. 自定义实体类,将应用到注解 [`@UniModel()`](../06.基础能力/1.UniModel.md)。 18 | 2. Flutter 主动调用原生能力,将应用到注解 [`@UniNativeModule()`](../06.基础能力/2.UniNativeModule.md)。 19 | 3. 原生主动给 Flutter 同步消息,将应用到注解 [`@UniFlutterModule()`](../06.基础能力/3.UniFlutterModule.md)。 20 | 21 | 现在,目标已经确定,在接下来章节中,我们将分模块一步一步实现上述功能。 -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/lib/uniapi/uni_api.dart: -------------------------------------------------------------------------------- 1 | class UniApi { 2 | static Function(String moduleName, String channel, String error)? _errorTrackCallback = (String moduleName, String channel, String error) { 3 | print(error); 4 | }; 5 | 6 | static void setErrorTrackCallback(Function(String moduleName, String channel, String error)? newCallback) { 7 | if (newCallback == null) { 8 | return; 9 | } 10 | _errorTrackCallback = newCallback; 11 | } 12 | 13 | static void trackError(String moduleName, String channel, String error) { 14 | _errorTrackCallback?.call(moduleName, channel, error); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/lib/uniapi/uni_api.dart: -------------------------------------------------------------------------------- 1 | class UniApi { 2 | static Function(String moduleName, String channel, String error)? _errorTrackCallback = (String moduleName, String channel, String error) { 3 | print(error); 4 | }; 5 | 6 | static void setErrorTrackCallback(Function(String moduleName, String channel, String error)? newCallback) { 7 | if (newCallback == null) { 8 | return; 9 | } 10 | _errorTrackCallback = newCallback; 11 | } 12 | 13 | static void trackError(String moduleName, String channel, String error) { 14 | _errorTrackCallback?.call(moduleName, channel, error); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/ast/uniapi/ast_model.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/ast/base.dart'; 2 | import 'package:unify_flutter/ast/basic/ast_variable.dart'; 3 | import 'package:unify_flutter/utils/file/input_file.dart'; 4 | 5 | class Model extends UniApiNode with Serializable { 6 | Model( 7 | this.name, 8 | this.inputFile, { 9 | this.fields = const [], 10 | this.isEnum = false, 11 | this.codeComments = const [], 12 | }); 13 | 14 | String name; 15 | List fields; 16 | InputFile inputFile; 17 | bool isEnum; 18 | List codeComments; 19 | 20 | @override 21 | String toString() => '[$name]'; 22 | } 23 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/generator/common.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/ast/uniapi/ast_method.dart'; 2 | import 'package:unify_flutter/ast/uniapi/ast_module.dart'; 3 | import 'package:unify_flutter/utils/constants.dart'; 4 | 5 | const String generatedCodeWarning = generatedWarning; 6 | 7 | const String generatedClassWarning = generatedWarning; 8 | 9 | const String generatedInterfaceWarning = generatedWarning; 10 | 11 | const String channelPrefix = 'com.didi.flutter.uni_api'; 12 | 13 | /// Create the generated channel name for a [func] on a [api]. 14 | String makeChannelName(Module module, Method func) => 15 | '$channelPrefix.${module.name}.${func.name}'; 16 | -------------------------------------------------------------------------------- /packages/unify_uni_page/ios/Classes/AbsUniPageFactory.h: -------------------------------------------------------------------------------- 1 | // 2 | // AbsUniPageFactory.h 3 | // unify_uni_page 4 | // 5 | // Created by jerry on 2024/7/16. 6 | // 7 | 8 | #import 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @class UniPage; 14 | 15 | // 别名定义 16 | typedef UniPage* _Nonnull (^UniPageFactoryCallback)(CGRect frame, int64_t viewId, NSDictionary *args); 17 | 18 | @interface AbsUniPageFactory : NSObject 19 | 20 | /// UniPage 工厂类 21 | /// - Parameter page: UniPage 对象实例 22 | - (instancetype)init:(UniPageFactoryCallback)block; 23 | 24 | @end 25 | 26 | NS_ASSUME_NONNULL_END 27 | -------------------------------------------------------------------------------- /doc/02.快速开始/6.定义《Flutter 向 Native 获取设备信息》接口.md: -------------------------------------------------------------------------------- 1 | # Flutter 向原生获取设备信息 2 | **需求问题**:Flutter 需要获取设备信息:系统版本、内存信息、手机型号。 3 | 4 | **需求分析**:这个需求是典型的`实现 Flutter → Native 的数据传递`的场景。可以通过[`@UniNativeModule()`](../06.基础能力/2.UniNativeModule.md)模板实现。 5 | 6 | **需求实现**:主要工作还是设计`协议接口`。下面是模板实现: 7 | 8 | 我们在 Unify 宿主工程的 interface 中创建模板文件`device_info_service.dart`,并添加内容: 9 | 10 | ```dart 11 | import 'package:unify/api/api.dart'; 12 | import 'device_info_model.dart'; 13 | 14 | @UniNativeModule() 15 | abstract class DeviceInfoService { 16 | /// 获取设备信息 17 | Future getDeviceInfo(); 18 | } 19 | ``` 20 | 这里的模板命名和抽象类命名,同样遵守 UniNativeModule 模板的[命名规则](../06.基础能力/2.UniNativeModule.md#命名规则)。 -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/android/src/main/java/com/example/unicallback_demo/UFUniCallback.java: -------------------------------------------------------------------------------- 1 | // ================================================= 2 | // Autogenerated from Unify 3.0.4, do not edit directly. 3 | // ================================================= 4 | 5 | package com.example.unicallback_demo; 6 | 7 | public class UFUniCallback { 8 | public String callbackName; 9 | public UFUniCallbackDispose disposeDelegate; 10 | 11 | public UFUniCallback(String callbackName, UFUniCallbackDispose disposeDelegate) { 12 | this.callbackName = callbackName; 13 | this.disposeDelegate = disposeDelegate; 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - unicallback_demo (0.0.1): 4 | - Flutter 5 | 6 | DEPENDENCIES: 7 | - Flutter (from `Flutter`) 8 | - unicallback_demo (from `.symlinks/plugins/unicallback_demo/ios`) 9 | 10 | EXTERNAL SOURCES: 11 | Flutter: 12 | :path: Flutter 13 | unicallback_demo: 14 | :path: ".symlinks/plugins/unicallback_demo/ios" 15 | 16 | SPEC CHECKSUMS: 17 | Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 18 | unicallback_demo: e773ea952de9a7c4e2bef3f7f72371eead117800 19 | 20 | PODFILE CHECKSUM: 1a782344d33c12ced0182eeab11e8668d253eb48 21 | 22 | COCOAPODS: 1.11.3 23 | -------------------------------------------------------------------------------- /packages/unify_uni_page/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. 25 | /pubspec.lock 26 | **/doc/api/ 27 | .dart_tool/ 28 | .packages 29 | build/ 30 | -------------------------------------------------------------------------------- /packages/unify_uni_page/example/README.md: -------------------------------------------------------------------------------- 1 | # unify_uni_page_example 2 | 3 | Demonstrates how to use the unify_uni_page plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/android/src/main/java/com/example/uninativemodule_demo/UDUniCallback.java: -------------------------------------------------------------------------------- 1 | // ================================================= 2 | // Autogenerated from Unify 3.0.4, do not edit directly. 3 | // ================================================= 4 | 5 | package com.example.uninativemodule_demo; 6 | 7 | public class UDUniCallback { 8 | public String callbackName; 9 | public UDUniCallbackDispose disposeDelegate; 10 | 11 | public UDUniCallback(String callbackName, UDUniCallbackDispose disposeDelegate) { 12 | this.callbackName = callbackName; 13 | this.disposeDelegate = disposeDelegate; 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/README.md: -------------------------------------------------------------------------------- 1 | # unify_uni_bus_example 2 | 3 | Demonstrates how to use the unify_uni_bus plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/android/src/main/java/com/example/unifluttermodule_demo/UFUniCallback.java: -------------------------------------------------------------------------------- 1 | // ================================================= 2 | // Autogenerated from Unify 3.0.4, do not edit directly. 3 | // ================================================= 4 | 5 | package com.example.unifluttermodule_demo; 6 | 7 | public class UFUniCallback { 8 | public String callbackName; 9 | public UFUniCallbackDispose disposeDelegate; 10 | 11 | public UFUniCallback(String callbackName, UFUniCallbackDispose disposeDelegate) { 12 | this.callbackName = callbackName; 13 | this.disposeDelegate = disposeDelegate; 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /packages/unify_uni_state/example/README.md: -------------------------------------------------------------------------------- 1 | # unify_uni_state_example 2 | 3 | Demonstrates how to use the unify_uni_state plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) 13 | 14 | For help getting started with Flutter development, view the 15 | [online documentation](https://docs.flutter.dev/), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - uninativemodule_demo (0.0.1): 4 | - Flutter 5 | 6 | DEPENDENCIES: 7 | - Flutter (from `Flutter`) 8 | - uninativemodule_demo (from `.symlinks/plugins/uninativemodule_demo/ios`) 9 | 10 | EXTERNAL SOURCES: 11 | Flutter: 12 | :path: Flutter 13 | uninativemodule_demo: 14 | :path: ".symlinks/plugins/uninativemodule_demo/ios" 15 | 16 | SPEC CHECKSUMS: 17 | Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 18 | uninativemodule_demo: d6d9105d0be0864a8ad6a16b39a8f842fed08d93 19 | 20 | PODFILE CHECKSUM: 1a782344d33c12ced0182eeab11e8668d253eb48 21 | 22 | COCOAPODS: 1.11.3 23 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/.gitignore: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | *.class 3 | *.log 4 | *.pyc 5 | *.swp 6 | .DS_Store 7 | .atom/ 8 | .buildlog/ 9 | .history 10 | .svn/ 11 | 12 | # IntelliJ related 13 | *.iml 14 | *.ipr 15 | *.iws 16 | .idea/ 17 | 18 | # The .vscode folder contains launch configuration and tasks you configure in 19 | # VS Code which you may wish to be included in version control, so this line 20 | # is commented out by default. 21 | #.vscode/ 22 | 23 | # Flutter/Dart/Pub related 24 | # Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. 25 | /pubspec.lock 26 | **/doc/api/ 27 | .dart_tool/ 28 | .packages 29 | build/ 30 | -------------------------------------------------------------------------------- /packages/unify_uni_bus/.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 | -------------------------------------------------------------------------------- /packages/unify_uni_state/.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 | -------------------------------------------------------------------------------- /doc/02.快速开始/3.安装 Unify.md: -------------------------------------------------------------------------------- 1 | # 引入 Unify 2 | 通过编辑 Unify 宿主工程中的`pubspec.yaml`,在`dev_dependencies`下添加 Unify 版本: 3 | 4 | ```yaml 5 | unify: ^3.0.0 6 | ``` 7 | 此时`pubspec.yaml`的内容如下: 8 | 9 | ```javascript 10 | name: hello_uni_foundation 11 | description: A new Flutter plugin project. 12 | version: 0.0.1 13 | homepage: 14 | 15 | environment: 16 | sdk: '>=3.0.6 <4.0.0' 17 | flutter: ">=3.3.0" 18 | 19 | dependencies: 20 | flutter: 21 | sdk: flutter 22 | plugin_platform_interface: ^2.0.2 23 | 24 | dev_dependencies: 25 | flutter_test: 26 | sdk: flutter 27 | flutter_lints: ^2.0.0 28 | unify: ^3.0.0 29 | ``` 30 | 执行`flutter pub get`命令,完成 Unify 库的安装。 31 | > Tips:有关 Unify 安装的细节,参考:[Unify安装](../03.安装教程.md)。 -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/example/README.md: -------------------------------------------------------------------------------- 1 | # unicallback_demo_example 2 | 3 | Demonstrates how to use the unicallback_demo plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - unifluttermodule_demo (0.0.1): 4 | - Flutter 5 | 6 | DEPENDENCIES: 7 | - Flutter (from `Flutter`) 8 | - unifluttermodule_demo (from `.symlinks/plugins/unifluttermodule_demo/ios`) 9 | 10 | EXTERNAL SOURCES: 11 | Flutter: 12 | :path: Flutter 13 | unifluttermodule_demo: 14 | :path: ".symlinks/plugins/unifluttermodule_demo/ios" 15 | 16 | SPEC CHECKSUMS: 17 | Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 18 | unifluttermodule_demo: 90dd4211c9f496f0af4d6c8dc34b0f26f45fb56e 19 | 20 | PODFILE CHECKSUM: 1a782344d33c12ced0182eeab11e8668d253eb48 21 | 22 | COCOAPODS: 1.11.3 23 | -------------------------------------------------------------------------------- /packages/unify_uni_page/ios/Classes/UniPageConstants.h: -------------------------------------------------------------------------------- 1 | // 2 | // UniPageConstants.h 3 | // Pods 4 | // 5 | // Created by jerry on 2024/7/16. 6 | // 7 | 8 | #ifndef UniPageConstants_h 9 | #define UniPageConstants_h 10 | 11 | #define UNI_PAGE_CHANNEL @"com.didi.unify.uni_page" 12 | #define UNI_PAGE_ROUTE_PUSH_NAMED @"pushNamed" 13 | #define UNI_PAGE_ROUTE_POP @"pop" 14 | #define UNI_PAGE_CHANNEL_PARAMS_PATH @"path" 15 | #define UNI_PAGE_CHANNEL_PARAMS_PARAMS @"params" 16 | #define UNI_PAGE_CHANNEL_INVOKE @"invoke" 17 | #define UNI_PAGE_CHANNEL_VIEW_TYPE @"viewType" 18 | #define UNI_PAGE_CHANNEL_VIEW_ID @"viewId" 19 | #define UNI_PAGE_CHANNEL_METHOD_NAME @"methodName" 20 | 21 | #endif /* UniPageConstants_h */ 22 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/android/app/src/main/java/com/example/uninativemodule_demo_example/DeviceInfoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.example.uninativemodule_demo_example; 2 | 3 | import com.example.uninativemodule_demo.DeviceInfoModel; 4 | import com.example.uninativemodule_demo.DeviceInfoService; 5 | 6 | public class DeviceInfoServiceImpl implements DeviceInfoService { 7 | @Override 8 | public void getDeviceInfo(Result result) { 9 | DeviceInfoModel model = new DeviceInfoModel(); 10 | model.setPlaform("Android"); 11 | model.setOsVersion("12"); 12 | model.setMemory("8GB"); 13 | result.success(model); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/03_unicallback_demo/ios/Classes/UFUniCallbackDispatcher.h: -------------------------------------------------------------------------------- 1 | // ================================================= 2 | // Autogenerated from Unify 3.0.4, do not edit directly. 3 | // ================================================= 4 | 5 | #import 6 | #import 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | @protocol UFUniCallbackDispose 10 | @required 11 | - (void)disposeCallback:(id)params; 12 | @end 13 | 14 | @interface UFUniCallbackDispatcher : NSObject 15 | + (void)init:(NSObject* _Nonnull)binaryMessenger; 16 | + (void)registe:(NSString * _Nonnull)name callback:(id _Nonnull)subscriber; 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/analyzer/visitors/custom_type_visitor.dart: -------------------------------------------------------------------------------- 1 | import 'package:analyzer/dart/ast/ast.dart' as dart_ast; 2 | import 'package:unify_flutter/analyzer/visitors/base_ast_visitor.dart'; 3 | 4 | class CustomTypeVisitor extends BaseAstVisitor { 5 | final List _customTypes = []; 6 | 7 | @override 8 | Object? visitClassDeclaration(dart_ast.ClassDeclaration node) { 9 | if (isUniNativeModule(node.metadata) || 10 | isUniFlutterModule(node.metadata) || 11 | isUniModel(node.metadata)) { 12 | _customTypes.add(node.name.lexeme); 13 | } 14 | node.visitChildren(this); 15 | return null; 16 | } 17 | 18 | List results() => _customTypes; 19 | } 20 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/example/README.md: -------------------------------------------------------------------------------- 1 | # uninativemodule_demo_example 2 | 3 | Demonstrates how to use the uninativemodule_demo plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/01_uninativemodule_demo/ios/Classes/UDUniCallbackDispatcher.h: -------------------------------------------------------------------------------- 1 | // ================================================= 2 | // Autogenerated from Unify 3.0.4, do not edit directly. 3 | // ================================================= 4 | 5 | #import 6 | #import 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | @protocol UDUniCallbackDispose 10 | @required 11 | - (void)disposeCallback:(id)params; 12 | @end 13 | 14 | @interface UDUniCallbackDispatcher : NSObject 15 | + (void)init:(NSObject* _Nonnull)binaryMessenger; 16 | + (void)registe:(NSString * _Nonnull)name callback:(id _Nonnull)subscriber; 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/example/README.md: -------------------------------------------------------------------------------- 1 | # unifluttermodule_demo_example 2 | 3 | Demonstrates how to use the unifluttermodule_demo plugin. 4 | 5 | ## Getting Started 6 | 7 | This project is a starting point for a Flutter application. 8 | 9 | A few resources to get you started if this is your first Flutter project: 10 | 11 | - [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) 12 | - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) 13 | 14 | For help getting started with Flutter, view our 15 | [online documentation](https://flutter.dev/docs), which offers tutorials, 16 | samples, guidance on mobile development, and a full API reference. 17 | -------------------------------------------------------------------------------- /packages/unify_uni_api/example/02_unifluttermodule_demo/ios/Classes/UFUniCallbackDispatcher.h: -------------------------------------------------------------------------------- 1 | // ================================================= 2 | // Autogenerated from Unify 3.0.4, do not edit directly. 3 | // ================================================= 4 | 5 | #import 6 | #import 7 | NS_ASSUME_NONNULL_BEGIN 8 | 9 | @protocol UFUniCallbackDispose 10 | @required 11 | - (void)disposeCallback:(id)params; 12 | @end 13 | 14 | @interface UFUniCallbackDispatcher : NSObject 15 | + (void)init:(NSObject* _Nonnull)binaryMessenger; 16 | + (void)registe:(NSString * _Nonnull)name callback:(id _Nonnull)subscriber; 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/ast/uniapi/ast_module.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/ast/base.dart'; 2 | import 'package:unify_flutter/ast/uniapi/ast_method.dart'; 3 | import 'package:unify_flutter/utils/file/input_file.dart'; 4 | 5 | class Module extends UniApiNode { 6 | Module( 7 | this.inputFile, { 8 | this.name = '', 9 | this.methods = const [], 10 | this.codeComments = const [], 11 | }); 12 | 13 | /// The name of the API. 14 | String name; 15 | 16 | /// List of methods inside the API. 17 | List methods; 18 | 19 | InputFile inputFile; 20 | 21 | List codeComments; 22 | 23 | @override 24 | String toString() => '(Module name:$name, methods: $methods)'; 25 | } 26 | -------------------------------------------------------------------------------- /packages/unify_uni_page/README.md: -------------------------------------------------------------------------------- 1 | # unify_uni_page 2 | 3 | A lightweight Flutter library for seamless integration of native pages using PlatformView. Provides a unified UniPage interface for Android and iOS, enabling easy embedding of native views in Flutter apps. 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, view our 13 | [online documentation](https://flutter.dev/docs), which offers tutorials, 14 | samples, guidance on mobile development, and a full API reference. 15 | -------------------------------------------------------------------------------- /packages/unify_uni_state/lib/unify_uni_state_method_channel.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/foundation.dart'; 2 | import 'package:flutter/services.dart'; 3 | 4 | import 'unify_uni_state_platform_interface.dart'; 5 | 6 | /// An implementation of [UnifyUniStatePlatform] that uses method channels. 7 | class MethodChannelUnifyUniState extends UnifyUniStatePlatform { 8 | /// The method channel used to interact with the native platform. 9 | @visibleForTesting 10 | final methodChannel = const MethodChannel('unify_uni_state'); 11 | 12 | @override 13 | Future getPlatformVersion() async { 14 | final version = await methodChannel.invokeMethod('getPlatformVersion'); 15 | return version; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/unify_uni_api/lib/ast/basic/ast_void.dart: -------------------------------------------------------------------------------- 1 | import 'package:unify_flutter/ast/base.dart'; 2 | 3 | class AstVoid extends AstType { 4 | const AstVoid({bool maybeNull = false}) : super(maybeNull, const []); 5 | 6 | @override 7 | String javaType({bool showGenerics = false}) => 8 | showGenerics ? 'Void' : 'void'; 9 | 10 | @override 11 | String javaNewInstance() => 'null'; 12 | 13 | @override 14 | String dartType({bool showGenerics = false}) => 'void'; 15 | 16 | @override 17 | String ocType({bool showGenerics = false}) => 'void'; 18 | 19 | @override 20 | String javaDefault() => 'null'; 21 | 22 | @override 23 | String dartDefault() => 'null'; 24 | 25 | @override 26 | String astType() => 'void'; 27 | } 28 | -------------------------------------------------------------------------------- /doc/01.项目简介.md: -------------------------------------------------------------------------------- 1 | # 简介 2 | Unify 是一套由 Flutter 实现的代码生成器,旨在为Flutter和其宿主平台之间的交互提供类型安全的代码生成解决方案。 3 | 4 | ## Unify 特点 5 | Unify 旨在为Flutter和其宿主平台之间的交互提供类型安全的代码生成解决方案。它具备以下特点: 6 | 7 | * 多端接口统一:借助代码自动生成技术和通用接口模板,实现多端接口的标准化和统一化。 8 | * 语言易扩展:内置了独特的AST协议和通用的代码模板,利用编程式思想进行多语言扩展。 9 | * 代码模块化:按照模板目录结构生成和存储代码,实体(Model/Entity)与接口完全分离解耦。 10 | * 简单易上手:一条命令实现跨端语言调用,开发者无需手动编写繁琐的通信代码,只需专注于接口的定义。 11 | 12 | ## 架构设计 13 | Unify 整体的架构设计,请参见 [Unify 架构设计](07.架构设计.md)。 14 | 15 | ## 开始使用 16 | * 想快速体验如何使用,请参考 [快速开始](02.快速开始/)。 17 | * 想了解 Unify 提供哪些能力,请参考 [基础能力](06.基础能力/)。 18 | * 想了解 Unify 模块设计原理,请参考 [原理概述](08.原理概述)。 19 | * 想了解更多 Unify CLI 的使用说明,请参考 [CLI 使用教程](04.CLI 使用教程.md)。 20 | 21 | ## 关于我们 22 | * Unify Github 地址:[https://github.com/didi/Unify](https://github.com/didi/Unify) 23 | -------------------------------------------------------------------------------- /doc/12.备注说明.md: -------------------------------------------------------------------------------- 1 | # 备注 2 | 3 | 很多人会有疑问:为什么没有基于Pigeon开发,而去新起一个项目呢?这里做个简单的说明。 4 | 5 | # 我们的诉求 6 | 1. 我们需要将涉及平台能力的十几个 SDK 与 Flutter 打通。 7 | * 从插件维护与集成层面考虑:不希望维护多个插件,希望维护1个插件; 8 | * 从代码维护与阅读层面考虑:不希望导出的代码偶在一起,希望导出代码有清晰的边界,一眼便知代码属于哪个 SDK。 9 | 2. 跨端收发数据直接操作实体 10 | * 不希望收发直接使用 Json 格式数据,希望直接操作对象实体(Model / Entity),隐藏掉 Json 序列化/反序列化操作。 11 | 12 | 我们在调研了 Pigeon 框架后,要实现上面诉求,需要额外付出较高的开发成本。 13 | # 背后的思考 14 | 15 | 有时候,新起一个项目可能会比参与到已有的最优秀项目中去做贡献更有吸引力和优势。我们有以下考虑: 16 | 1. **独立性**:新起一个项目可以给开发者提供更大的独立性空间。我们可以自由地设计和实现自己的想法,不受已有项目的限制和约束。自己可以完全掌控项目的方向和发展。 17 | 2. **实用性**:能够更契合实际业务需求,开发更实用性的功能,而不是多而全的功能堆积。 18 | 3. **维护性**:在实际商业项目使用,对出现的问题响应需要更高的及时性,有时依赖社区支持成本是件奢侈的事。 19 | 20 | 综合考量,我们新起了一个新的项目。当然,参与到已有的最优秀项目中去做贡献也是非常有价值和有意义的。这样可以与其他优秀的开发者合作,学习和借鉴他们的经验和技术,共同推动项目的发展和进步。 -------------------------------------------------------------------------------- /packages/unify_uni_bus/example/android/app/src/main/res/layout/android_button_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 |