Commit 674afe69 by 李长兴

1、备份原始sharesdk;

parents
.DS_Store
.dart_tool/
.packages
.pub/
build/
<component name="libraryTable">
<library name="Dart SDK">
<CLASSES>
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/async" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/collection" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/convert" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/core" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/developer" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/html" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/io" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/isolate" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/math" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/mirrors" />
<root url="file:///Users/harveyhe/App/flutter/bin/cache/dart-sdk/lib/typed_data" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
\ No newline at end of file
<component name="libraryTable">
<library name="Flutter for Android">
<CLASSES>
<root url="jar:///Users/harveyhe/App/flutter/bin/cache/artifacts/engine/android-arm/flutter.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/flutter_sharesdk.iml" filepath="$PROJECT_DIR$/flutter_sharesdk.iml" />
<module fileurl="file://$PROJECT_DIR$/android/flutter_sharesdk_android.iml" filepath="$PROJECT_DIR$/android/flutter_sharesdk_android.iml" />
<module fileurl="file://$PROJECT_DIR$/example/android/flutter_sharesdk_example_android.iml" filepath="$PROJECT_DIR$/example/android/flutter_sharesdk_example_android.iml" />
</modules>
</component>
</project>
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="example/lib/main.dart" type="FlutterRunConfigurationType" factoryName="Flutter">
<option name="filePath" value="$PROJECT_DIR$/example/lib/main.dart" />
<method />
</configuration>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="flutter_sharesdk.dart" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/lib/flutter_sharesdk.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="main.dart" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/example/lib/main.dart">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="ToolWindowManager">
<editor active="true" />
<layout>
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
</layout>
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
</navigator>
<panes>
<pane id="ProjectPane">
<option name="show-excluded-files" value="false" />
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="dart.analysis.tool.window.force.activate" value="true" />
<property name="show.migrate.to.gradle.popup" value="false" />
</component>
</project>
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: bc7bc940836f1f834699625426795fd6f07c18ec
channel: beta
project_type: plugin
## 0.0.1
* TODO: Describe initial release.
TODO: Add your license here.
# flutter_sharesdk
A new flutter plugin project.
## Getting Started
This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code for
Android and/or iOS.
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
group 'com.example.flutter_sharesdk'
version '1.0-SNAPSHOT'
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
rootProject.allprojects {
repositories {
google()
jcenter()
}
}
apply plugin: 'com.android.library'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 16
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
lintOptions {
disable 'InvalidPackage'
}
}
org.gradle.jvmargs=-Xmx1536M
rootProject.name = 'flutter_sharesdk'
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_sharesdk">
</manifest>
package com.example.flutter_sharesdk;
import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
import io.flutter.plugin.common.PluginRegistry.Registrar;
/** FlutterSharesdkPlugin */
public class FlutterSharesdkPlugin implements MethodCallHandler {
/** Plugin registration. */
public static void registerWith(Registrar registrar) {
final MethodChannel channel = new MethodChannel(registrar.messenger(), "flutter_sharesdk");
channel.setMethodCallHandler(new FlutterSharesdkPlugin());
}
@Override
public void onMethodCall(MethodCall call, Result result) {
if (call.method.equals("getPlatformVersion")) {
result.success("Android " + android.os.Build.VERSION.RELEASE);
} else {
result.notImplemented();
}
}
}
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.packages
.pub-cache/
.pub/
/build/
# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/flutter_assets/
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: bc7bc940836f1f834699625426795fd6f07c18ec
channel: beta
project_type: app
# flutter_sharesdk_example
Demonstrates how to use the flutter_sharesdk plugin.
## Getting Started
This project is a starting point for a Flutter application.
A few resources to get you started if this is your first Flutter project:
- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials,
samples, guidance on mobile development, and a full API reference.
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 28
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.flutter_sharesdk_example"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_sharesdk_example">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_sharesdk_example">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="io.flutter.app.FlutterApplication"
android:label="flutter_sharesdk_example"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- This keeps the window background of the activity showing
until Flutter renders its first frame. It can be removed if
there is no splash screen (such as the default splash screen
defined in @style/LaunchTheme). -->
<meta-data
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
android:value="true" />
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
package com.example.flutter_sharesdk_example;
import android.os.Bundle;
import io.flutter.app.FlutterActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
}
}
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
</resources>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.flutter_sharesdk_example">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
task clean(type: Delete) {
delete rootProject.buildDir
}
org.gradle.jvmargs=-Xmx1536M
#Fri Jun 23 08:50:38 CEST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip
include ':app'
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
</dict>
</plist>
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
project 'Runner', {
'Debug' => :debug,
'Profile' => :release,
'Release' => :release,
}
def parse_KV_file(file, separator='=')
file_abs_path = File.expand_path(file)
if !File.exists? file_abs_path
return [];
end
pods_ary = []
skip_line_start_symbols = ["#", "/"]
File.foreach(file_abs_path) { |line|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
plugin = line.split(pattern=separator)
if plugin.length == 2
podname = plugin[0].strip()
path = plugin[1].strip()
podpath = File.expand_path("#{path}", file_abs_path)
pods_ary.push({:name => podname, :path => podpath});
else
puts "Invalid plugin specification: #{line}"
end
}
return pods_ary
end
target 'Runner' do
use_frameworks!
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
# referring to absolute paths on developers' machines.
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
# Flutter Pods
generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
if generated_xcode_build_settings.empty?
puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first."
end
generated_xcode_build_settings.map { |p|
if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
symlink = File.join('.symlinks', 'flutter')
File.symlink(File.dirname(p[:path]), symlink)
pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
end
}
# Plugin Pods
plugin_pods = parse_KV_file('../.flutter-plugins')
plugin_pods.map { |p|
symlink = File.join('.symlinks', 'plugins', p[:name])
File.symlink(p[:path], symlink)
pod p[:name], :path => File.join(symlink, 'ios')
}
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
PODS:
- Flutter (1.0.0)
- flutter_sharesdk (0.0.1):
- Flutter
- mob_sharesdk
- mob_sharesdk/ShareSDKPlatforms/Facebook
- mob_sharesdk/ShareSDKPlatforms/SinaWeibo
- mob_sharesdk/ShareSDKPlatforms/Twitter
- mob_sharesdk/ShareSDKPlatforms/WeChat
- mob_sharesdk/ShareSDKUI
- mob_sharesdk (4.2.6):
- mob_sharesdk/ShareSDK (= 4.2.6)
- MOBFoundation
- mob_sharesdk/ShareSDK (4.2.6):
- MOBFoundation
- mob_sharesdk/ShareSDKPlatforms/Facebook (4.2.6):
- mob_sharesdk/ShareSDK
- MOBFoundation
- mob_sharesdk/ShareSDKPlatforms/SinaWeibo (4.2.6):
- mob_sharesdk/ShareSDK
- MOBFoundation
- mob_sharesdk/ShareSDKPlatforms/Twitter (4.2.6):
- mob_sharesdk/ShareSDK
- MOBFoundation
- mob_sharesdk/ShareSDKPlatforms/WeChat (4.2.6):
- mob_sharesdk/ShareSDK
- MOBFoundation
- mob_sharesdk/ShareSDKUI (4.2.6):
- mob_sharesdk/ShareSDK
- MOBFoundation
- MOBFoundation (3.2.2)
DEPENDENCIES:
- Flutter (from `.symlinks/flutter/ios`)
- flutter_sharesdk (from `.symlinks/plugins/flutter_sharesdk/ios`)
SPEC REPOS:
https://github.com/cocoapods/specs.git:
- mob_sharesdk
- MOBFoundation
EXTERNAL SOURCES:
Flutter:
:path: ".symlinks/flutter/ios"
flutter_sharesdk:
:path: ".symlinks/plugins/flutter_sharesdk/ios"
SPEC CHECKSUMS:
Flutter: 58dd7d1b27887414a370fcccb9e645c08ffd7a6a
flutter_sharesdk: 378aaf848c771f06aaed72e7ebffbb651324200e
mob_sharesdk: e993f357a6f1581a956aea16ea142c9de0425bf7
MOBFoundation: b5ff4038ddb9a0f06b685b86408f905a10aa147c
PODFILE CHECKSUM: b7d0755641915265774624f3b3be49c5c073d379
COCOAPODS: 1.7.5
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
</Workspace>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0910"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "97C146ED1CF9000F007C117D"
BuildableName = "Runner.app"
BlueprintName = "Runner"
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildSystemType</key>
<string>Original</string>
</dict>
</plist>
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
{
"images" : [
{
"idiom" : "universal",
"filename" : "LaunchImage.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "LaunchImage@3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
# Launch Screen Assets
You can customize the launch screen with your own desired assets by replacing the image files in this directory.
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.
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="12121" systemVersion="16G29" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12089"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
<constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="LaunchImage" width="168" height="185"/>
</resources>
</document>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
</dependencies>
<scenes>
<!--Flutter View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="FlutterViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>flutter_sharesdk_example</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>
#import "GeneratedPluginRegistrant.h"
\ No newline at end of file
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:flutter_sharesdk/flutter_sharesdk.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
@override
void initState() {
super.initState();
initPlatformState();
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
String platformVersion;
// Platform messages may fail, so we use a try/catch PlatformException.
try {
// platformVersion = await FlutterSharesdk.platformVersion;
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Text('Running on: $_platformVersion\n'),
),
),
);
}
}
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
async:
dependency: transitive
description:
name: async
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.4"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.14.11"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.1.2"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_sharesdk:
dependency: "direct dev"
description:
path: ".."
relative: true
source: path
version: "0.0.1"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.12.5"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.6"
path:
dependency: transitive
description:
name: path
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.6.2"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.7.0"
quiver:
dependency: transitive
description:
name: quiver
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.3"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
source_span:
dependency: transitive
description:
name: source_span
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.5.5"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.9.3"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.0"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.4"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.5"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.6"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.8"
sdks:
dart: ">=2.2.2 <3.0.0"
name: flutter_sharesdk_example
description: Demonstrates how to use the flutter_sharesdk plugin.
publish_to: 'none'
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
dev_dependencies:
flutter_test:
sdk: flutter
flutter_sharesdk:
path: ../
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# For details regarding adding assets from package dependencies, see
# https://flutter.dev/assets-and-images/#from-packages
# To add custom fonts to your application, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages
// This is a basic Flutter widget test.
//
// To perform an interaction with a widget in your test, use the WidgetTester
// utility that Flutter provides. For example, you can send tap and scroll
// gestures. You can also use WidgetTester to find child widgets in the widget
// tree, read text, and verify that the values of widget properties are correct.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_sharesdk_example/main.dart';
void main() {
testWidgets('Verify Platform version', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(MyApp());
// Verify that platform version is retrieved.
expect(
find.byWidgetPredicate(
(Widget widget) => widget is Text &&
widget.data.startsWith('Running on:'),
),
findsOneWidget,
);
});
}
Flutter crash report; please file at https://github.com/flutter/flutter/issues.
## command
flutter packages get
## exception
FileSystemException: FileSystemException: Cannot open file, path = '/Users/harveyhe/App/flutter/bin/cache/downloads/storage.googleapis.com/flutter_infra/flutter/fee001c93f25a1e7258e762781a7361f122d29f5/android-arm-profile/artifacts.zip' (OS Error: No such file or directory, errno = 2)
```
#0 _File.throwIfError (dart:io/file_impl.dart:643:7)
#1 _File.openSync (dart:io/file_impl.dart:487:5)
#2 _File.writeAsBytesSync (dart:io/file_impl.dart:612:31)
#3 _LocalFile&LocalFileSystemEntity&ForwardingFile.writeAsBytesSync (package:file/src/forwarding/forwarding_file.dart:129:16)
#4 _downloadFile (package:flutter_tools/src/cache.dart:935:12)
<asynchronous suspension>
#5 CachedArtifact._downloadArchive.<anonymous closure> (package:flutter_tools/src/cache.dart:404:17)
<asynchronous suspension>
#6 CachedArtifact._withDownloadFile (package:flutter_tools/src/cache.dart:433:26)
<asynchronous suspension>
#7 CachedArtifact._downloadArchive (package:flutter_tools/src/cache.dart:400:12)
#8 CachedArtifact._downloadZipArchive (package:flutter_tools/src/cache.dart:420:12)
#9 EngineCachedArtifact.updateInner (package:flutter_tools/src/cache.dart:567:13)
<asynchronous suspension>
#10 CachedArtifact.update (package:flutter_tools/src/cache.dart:363:11)
<asynchronous suspension>
#11 Cache.updateAll (package:flutter_tools/src/cache.dart:287:26)
<asynchronous suspension>
#12 FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:467:19)
<asynchronous suspension>
#13 FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:383:33)
<asynchronous suspension>
#14 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29)
<asynchronous suspension>
#15 _rootRun (dart:async/zone.dart:1124:13)
#16 _CustomZone.run (dart:async/zone.dart:1021:19)
#17 _runZoned (dart:async/zone.dart:1516:10)
#18 runZoned (dart:async/zone.dart:1463:12)
#19 AppContext.run (package:flutter_tools/src/base/context.dart:152:18)
<asynchronous suspension>
#20 FlutterCommand.run (package:flutter_tools/src/runner/flutter_command.dart:375:20)
#21 CommandRunner.runCommand (package:args/command_runner.dart:197:27)
<asynchronous suspension>
#22 FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:396:21)
<asynchronous suspension>
#23 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29)
<asynchronous suspension>
#24 _rootRun (dart:async/zone.dart:1124:13)
#25 _CustomZone.run (dart:async/zone.dart:1021:19)
#26 _runZoned (dart:async/zone.dart:1516:10)
#27 runZoned (dart:async/zone.dart:1463:12)
#28 AppContext.run (package:flutter_tools/src/base/context.dart:152:18)
<asynchronous suspension>
#29 FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:356:19)
<asynchronous suspension>
#30 CommandRunner.run.<anonymous closure> (package:args/command_runner.dart:112:25)
#31 new Future.sync (dart:async/future.dart:224:31)
#32 CommandRunner.run (package:args/command_runner.dart:112:14)
#33 FlutterCommandRunner.run (package:flutter_tools/src/runner/flutter_command_runner.dart:242:18)
#34 run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:22)
<asynchronous suspension>
#35 _rootRun (dart:async/zone.dart:1124:13)
#36 _CustomZone.run (dart:async/zone.dart:1021:19)
#37 _runZoned (dart:async/zone.dart:1516:10)
#38 runZoned (dart:async/zone.dart:1500:12)
#39 run.<anonymous closure> (package:flutter_tools/runner.dart:60:18)
<asynchronous suspension>
#40 AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:29)
<asynchronous suspension>
#41 _rootRun (dart:async/zone.dart:1124:13)
#42 _CustomZone.run (dart:async/zone.dart:1021:19)
#43 _runZoned (dart:async/zone.dart:1516:10)
#44 runZoned (dart:async/zone.dart:1463:12)
#45 AppContext.run (package:flutter_tools/src/base/context.dart:152:18)
<asynchronous suspension>
#46 runInContext (package:flutter_tools/src/context_runner.dart:56:24)
<asynchronous suspension>
#47 run (package:flutter_tools/runner.dart:51:10)
#48 main (package:flutter_tools/executable.dart:62:9)
<asynchronous suspension>
#49 main (file:///Users/harveyhe/App/flutter/packages/flutter_tools/bin/flutter_tools.dart:8:3)
#50 _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:299:32)
#51 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
```
## flutter doctor
```
[✓] Flutter (Channel beta, v1.7.8+hotfix.4, on Mac OS X 10.14.5 18F132, locale zh-Hans-CN)
• Flutter version 1.7.8+hotfix.4 at /Users/harveyhe/App/flutter
• Framework revision 20e59316b8 (3 days ago), 2019-07-18 20:04:33 -0700
• Engine revision fee001c93f
• Dart version 2.4.0
[!] Android toolchain - develop for Android devices (Android SDK version 26.0.2)
• Android SDK at /Users/harveyhe/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
✗ Flutter requires Android SDK 28 and the Android BuildTools 28.0.3
To update using sdkmanager, run:
"/Users/harveyhe/Library/Android/sdk/tools/bin/sdkmanager" "platforms;android-28" "build-tools;28.0.3"
or visit https://flutter.dev/setup/#android-setup for detailed instructions.
! Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses
[✓] Xcode - develop for iOS and macOS (Xcode 10.2.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 10.2.1, Build version 10E1001
• CocoaPods version 1.7.1
[✓] iOS tools - develop for iOS devices
• ios-deploy 1.9.4
[!] Android Studio (version 3.0)
• Android Studio at /Applications/Android Studio.app/Contents
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)
[!] IntelliJ IDEA Ultimate Edition (version 2018.1)
• IntelliJ at /Applications/IntelliJ IDEA.app
✗ Flutter plugin not installed; this adds Flutter specific functionality.
✗ Dart plugin not installed; this adds Dart specific functionality.
• For information about installing plugins, see
https://flutter.dev/intellij-setup/#installing-the-plugins
[✓] VS Code (version 1.36.1)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.2.0
[✓] Connected device (1 available)
• HongWei的 iPad • 82196441aced2936a64bf30e867a979b5e23ca6c • ios • iOS 12.3.1
! Doctor found issues in 3 categories.
```
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/lib" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/.idea" />
<excludeFolder url="file://$MODULE_DIR$/.pub" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/example/build" />
</content>
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Dart Packages" level="project" />
<orderEntry type="library" name="Dart SDK" level="project" />
<orderEntry type="library" name="Flutter Plugins" level="project" />
</component>
</module>
\ No newline at end of file
.idea/
.vagrant/
.sconsign.dblite
.svn/
.DS_Store
*.swp
profile
DerivedData/
build/
GeneratedPluginRegistrant.h
GeneratedPluginRegistrant.m
.generated/
*.pbxuser
*.mode1v3
*.mode2v3
*.perspectivev3
!default.pbxuser
!default.mode1v3
!default.mode2v3
!default.perspectivev3
xcuserdata
*.moved-aside
*.pyc
*sync/
Icon?
.tags*
/Flutter/Generated.xcconfig
#import <Flutter/Flutter.h>
@interface FlutterSharesdkPlugin : NSObject<FlutterPlugin>
@end
import Flutter
import UIKit
public class SwiftFlutterSharesdkPlugin: NSObject, FlutterPlugin {
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "flutter_sharesdk", binaryMessenger: registrar.messenger())
let instance = SwiftFlutterSharesdkPlugin()
registrar.addMethodCallDelegate(instance, channel: channel)
}
public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
result("iOS " + UIDevice.current.systemVersion)
}
}
#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = 'flutter_sharesdk'
s.version = '0.0.1'
s.summary = 'A new flutter plugin project.'
s.description = <<-DESC
A new flutter plugin project.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
s.author = { 'Your Company' => 'email@example.com' }
s.source = { :path => '.' }
s.source_files = 'Classes/**/*'
s.public_header_files = 'Classes/**/*.h'
s.dependency 'Flutter'
s.dependency 'mob_sharesdk'
s.dependency 'mob_sharesdk/ShareSDKUI'
s.dependency 'mob_sharesdk/ShareSDKPlatforms/SinaWeibo'
s.dependency 'mob_sharesdk/ShareSDKPlatforms/WeChat'
s.dependency 'mob_sharesdk/ShareSDKPlatforms/Facebook'
s.dependency 'mob_sharesdk/ShareSDKPlatforms/Twitter'
s.ios.deployment_target = '8.0'
s.static_framework = true
end
/// Flutter plugin implementing share and auth
///
/// To use, import `package:sharesdk/sharesdk.dart`;
library sharesdk;
export './sharesdk_defines.dart';
export './sharesdk_interface.dart';
export './sharesdk_map.dart';
export './sharesdk_register.dart';
import 'package:flutter/foundation.dart';
enum SSDKResponseState { Success, Fail, Cancel, Unknown }
/// custom error
class SSDKError extends Error {
SSDKError({this.rawData})
: code = rawData != null ? rawData["code"] : 0,
userInfo = rawData != null ? rawData["userInfo"] : {},
super();
final Map rawData;
final int code;
final Map userInfo;
}
/// model for method
class ShareSDKMethod {
ShareSDKMethod({@required this.name, @required this.id})
: assert(name != null && id != null),
super();
final String name;
final int id;
}
/// method defines
class ShareSDKMethods {
static final ShareSDKMethod getVersion =
ShareSDKMethod(name: "getVersion", id: 0);
static final ShareSDKMethod share = ShareSDKMethod(name: "share", id: 1);
static final ShareSDKMethod auth = ShareSDKMethod(name: "auth", id: 2);
static final ShareSDKMethod hasAuthed =
ShareSDKMethod(name: "hasAuthed", id: 3);
static final ShareSDKMethod cancelAuth =
ShareSDKMethod(name: "cancelAuth", id: 4);
static final ShareSDKMethod getUserInfo =
ShareSDKMethod(name: "getUserInfo", id: 5);
static final ShareSDKMethod regist = ShareSDKMethod(name: "regist", id: 6);
static final ShareSDKMethod activePlatforms =
ShareSDKMethod(name: "activePlatforms", id: 7);
static final ShareSDKMethod showMenu =
ShareSDKMethod(name: "showMenu", id: 7);
static final ShareSDKMethod showEditor =
ShareSDKMethod(name: "showEditor", id: 8);
static final ShareSDKMethod openMiniProgram =
ShareSDKMethod(name: "openMiniProgram", id: 9);
}
class ShareSDKPlatform {
ShareSDKPlatform({@required this.id, @required this.name})
: assert(id != null && name != null),
super();
final int id;
final String name;
}
/// supported platform defines
class ShareSDKPlatforms {
static final ShareSDKPlatform sina = ShareSDKPlatform(name: "sina", id: 1);
static final ShareSDKPlatform tencentWeibo =
ShareSDKPlatform(name: "tencentWeibo", id: 2);
static final ShareSDKPlatform douBan =
ShareSDKPlatform(name: "douBan", id: 5);
static final ShareSDKPlatform qZone = ShareSDKPlatform(name: "qZone", id: 6);
static final ShareSDKPlatform renren =
ShareSDKPlatform(name: "renren", id: 7);
static final ShareSDKPlatform kaixin =
ShareSDKPlatform(name: "kaixin", id: 8);
static final ShareSDKPlatform facebook =
ShareSDKPlatform(name: "facebook", id: 10);
static final ShareSDKPlatform twitter =
ShareSDKPlatform(name: "twitter", id: 11);
static final ShareSDKPlatform yinXiang =
ShareSDKPlatform(name: "yinXiang", id: 12);
static final ShareSDKPlatform googlePlus =
ShareSDKPlatform(name: "googlePlus", id: 14);
static final ShareSDKPlatform instagram =
ShareSDKPlatform(name: "instagram", id: 15);
static final ShareSDKPlatform linkedIn =
ShareSDKPlatform(name: "linkedIn", id: 16);
static final ShareSDKPlatform tumblr =
ShareSDKPlatform(name: "tumblr", id: 17);
static final ShareSDKPlatform mail = ShareSDKPlatform(name: "mail", id: 18);
static final ShareSDKPlatform sms = ShareSDKPlatform(name: "sms", id: 19);
static final ShareSDKPlatform print = ShareSDKPlatform(name: "print", id: 20);
static final ShareSDKPlatform copy = ShareSDKPlatform(name: "copy", id: 21);
static final ShareSDKPlatform wechatSession =
ShareSDKPlatform(name: "wechatSession", id: 22);
static final ShareSDKPlatform wechatTimeline =
ShareSDKPlatform(name: "wechatTimeline", id: 23);
static final ShareSDKPlatform qq = ShareSDKPlatform(name: "qq", id: 24);
static final ShareSDKPlatform instapaper =
ShareSDKPlatform(name: "instapaper", id: 25);
static final ShareSDKPlatform pocket =
ShareSDKPlatform(name: "pocket", id: 26);
static final ShareSDKPlatform youdaoNote =
ShareSDKPlatform(name: "youdaoNote", id: 27);
static final ShareSDKPlatform pinterest =
ShareSDKPlatform(name: "pinterest", id: 30);
static final ShareSDKPlatform flickr =
ShareSDKPlatform(name: "flickr", id: 34);
static final ShareSDKPlatform dropbox =
ShareSDKPlatform(name: "dropbox", id: 35);
static final ShareSDKPlatform vKontakte =
ShareSDKPlatform(name: "vKontakte", id: 36);
static final ShareSDKPlatform weChatFavorites =
ShareSDKPlatform(name: "weChatFavorites", id: 37);
static final ShareSDKPlatform yixinSession =
ShareSDKPlatform(name: "yixinSession", id: 38);
static final ShareSDKPlatform yixinTimeline =
ShareSDKPlatform(name: "yixinTimeline", id: 39);
static final ShareSDKPlatform yiXinFav =
ShareSDKPlatform(name: "yixinFav", id: 40);
static final ShareSDKPlatform mingDao =
ShareSDKPlatform(name: "mingDao", id: 41);
static final ShareSDKPlatform line = ShareSDKPlatform(name: "line", id: 42);
static final ShareSDKPlatform whatsApp =
ShareSDKPlatform(name: "whatsApp", id: 43);
static final ShareSDKPlatform kakaoTalk =
ShareSDKPlatform(name: "kakaoTalk", id: 44);
static final ShareSDKPlatform kakaoStory =
ShareSDKPlatform(name: "kakaoStory", id: 45);
static final ShareSDKPlatform messenger =
ShareSDKPlatform(name: "messenger", id: 46);
static final ShareSDKPlatform telegram =
ShareSDKPlatform(name: "telegram", id: 47);
static final ShareSDKPlatform aliSocial =
ShareSDKPlatform(name: "aliSocial", id: 50);
static final ShareSDKPlatform aliSocialTimeline =
ShareSDKPlatform(name: "aliSocialTimeline", id: 51);
static final ShareSDKPlatform dingding =
ShareSDKPlatform(name: "dingding", id: 52);
static final ShareSDKPlatform youtube =
ShareSDKPlatform(name: "youtube", id: 53);
static final ShareSDKPlatform meiPai =
ShareSDKPlatform(name: "meiPai", id: 54);
static final ShareSDKPlatform cmcc = ShareSDKPlatform(name: "cmcc", id: 55);
static final ShareSDKPlatform reddit =
ShareSDKPlatform(name: "reddit", id: 56);
static final ShareSDKPlatform douyin =
ShareSDKPlatform(name: "douyin", id: 59);
static final ShareSDKPlatform yixinSeries =
ShareSDKPlatform(name: "yixinSeries", id: 994);
static final ShareSDKPlatform kakaoSeries =
ShareSDKPlatform(name: "kakaoSeries", id: 995);
static final ShareSDKPlatform evernote =
ShareSDKPlatform(name: "evernote", id: 996);
static final ShareSDKPlatform wechatSeries =
ShareSDKPlatform(name: "wechatSeries", id: 997);
static final ShareSDKPlatform qqSeries =
ShareSDKPlatform(name: "qqSeries", id: 998);
}
/// model for contentType
class SSDKContentType {
SSDKContentType({this.value}) : super();
final int value;
}
/// supported share content types
class SSDKContentTypes extends Object {
static SSDKContentType get auto => SSDKContentType(value: 0);
static SSDKContentType get text => SSDKContentType(value: 1);
static SSDKContentType get image => SSDKContentType(value: 2);
static SSDKContentType get webpage => SSDKContentType(value: 3);
static SSDKContentType get app => SSDKContentType(value: 4);
static SSDKContentType get audio => SSDKContentType(value: 5);
static SSDKContentType get video => SSDKContentType(value: 6);
static SSDKContentType get file => SSDKContentType(value: 7);
static SSDKContentType get miniProgram => SSDKContentType(value: 10);
}
import 'dart:async';
import 'package:flutter/services.dart';
import './sharesdk_defines.dart';
import './sharesdk_register.dart';
import './sharesdk_map.dart';
class ShareSDK {
static const MethodChannel _channel =
const MethodChannel('com.yoozoo.mob/sharesdk');
static const EventChannel java_to_flutter =
const EventChannel("JAVA_TO_FLUTTER");
static Future<dynamic> listenNativeEvent() {
java_to_flutter
.receiveBroadcastStream()
.listen(_onEvent, onError: _onError);
return null;
}
static Future<dynamic> _onEvent(Object event) {
print("onEvent: $event ");
return null;
}
static Future<dynamic> _onError(Object error) {
print(error);
return null;
}
/// 注册方法:
/// 1. 创建register对象,
/// 2. 通过register对象的函数设置平台参数,
/// 3. 通过register注册
static Future<dynamic> regist(ShareSDKRegister register) async {
return await _channel.invokeMethod(
ShareSDKMethods.regist.name, register.platformsInfo);
}
/// 分享
static Future<dynamic> share(ShareSDKPlatform platform, SSDKMap params,
Function(SSDKResponseState, Map, Map, SSDKError) result) {
Map args = {"platform": platform.id, "params": params.map};
Future<dynamic> callback =
_channel.invokeMethod(ShareSDKMethods.share.name, args);
callback.then((dynamic response) {
if (result != null) {
result(_state(response), response["userData"],
response["contentEntity"], SSDKError(rawData: response["error"]));
}
});
return callback;
}
/// 授权
static Future<dynamic> auth(ShareSDKPlatform platform, Map settings,
Function(SSDKResponseState, Map, SSDKError) result) {
Map args = {"platform": platform.id, "settings": settings};
Future<dynamic> callback =
_channel.invokeMethod(ShareSDKMethods.auth.name, args);
callback.then((dynamic response) {
print('======> $callback !' + '~~~~~> $response');
if (result != null) {
result(_state(response), response["user"],
SSDKError(rawData: response["error"]));
}
});
return callback;
}
/// 判断是否授权
static Future<dynamic> hasAuthed(ShareSDKPlatform platform,
Function(SSDKResponseState, Map, SSDKError) result) {
Future<dynamic> callback = _channel.invokeMethod(
ShareSDKMethods.hasAuthed.name, platform.id);
callback.then((dynamic response) {
if(result != null) {
result(_state(response), response["user"],
SSDKError(rawData: response["error"]));
}
});
}
/// 取消授权
static Future<dynamic> cancelAuth(ShareSDKPlatform platform,
Function(SSDKResponseState, Map, SSDKError) result) {
Future<dynamic> callback = _channel.invokeMethod(
ShareSDKMethods.cancelAuth.name, platform.id);
callback.then((dynamic response) {
if(result != null) {
result(_state(response), response["user"],
SSDKError(rawData: response["error"]));
}
});
}
/// 获取用户信息
static Future<dynamic> getUserInfo(ShareSDKPlatform platform,
Function(SSDKResponseState, Map, SSDKError) result) {
Map args = {"platform": platform.id};
Future<dynamic> callback =
_channel.invokeMethod(ShareSDKMethods.getUserInfo.name, args);
callback.then((dynamic response) {
if (result != null) {
result(_state(response), response["user"],
SSDKError(rawData: response["error"]));
}
});
return callback;
}
/// 弹出分享菜单
static Future<dynamic> showMenu(
List<ShareSDKPlatform> platforms,
SSDKMap params,
Function(SSDKResponseState, ShareSDKPlatform, Map, Map, SSDKError)
result) {
List types;
if (platforms != null) {
Iterable<int> ids = platforms.map((ShareSDKPlatform item) => item.id);
types = List.from(ids);
}
Map args = {"platforms": types, "params": params.map};
Future<dynamic> callback =
_channel.invokeMethod(ShareSDKMethods.showMenu.name, args);
callback.then((dynamic response) {
if (result != null) {
result(
_state(response),
ShareSDKPlatform(id: response["platform"], name: "null"),
response["userData"],
response["contentEntity"],
SSDKError(rawData: response["error"]));
}
});
return callback;
}
/// 弹出编辑菜单
static Future<dynamic> showEditor(
ShareSDKPlatform platform,
SSDKMap params,
Function(SSDKResponseState, ShareSDKPlatform, Map, Map, SSDKError)
result) {
Map args = {"platform": platform.id, "params": params.map};
Future<dynamic> callback =
_channel.invokeMethod(ShareSDKMethods.showEditor.name, args);
callback.then((dynamic response) {
print(response);
if (result != null) {
result(
_state(response),
ShareSDKPlatform(id: response["platform"], name: "null"),
response["userData"],
response["contentEntity"],
SSDKError(rawData: response["error"]));
}
});
return callback;
}
/// 已集成的平台
static Future<dynamic> activePlatforms() async {
return await _channel.invokeMethod(ShareSDKMethods.activePlatforms.name);
}
/// 获取sdk版本号
static Future<dynamic> get sdkVersion async {
return await _channel.invokeMethod(ShareSDKMethods.getVersion.name);
}
/// 打开微信小程序
static Future<dynamic> openWeChatMiniProgram(
String userName, String path, int miniProgramType) async {
Map args = {"userName": userName, "path": path, "type": miniProgramType};
return await _channel.invokeMethod(
ShareSDKMethods.openMiniProgram.name, args);
}
static SSDKResponseState _state(Map response) {
SSDKResponseState state = SSDKResponseState.Unknown;
switch (response["state"]) {
case 1:
state = SSDKResponseState.Success;
break;
case 2:
state = SSDKResponseState.Fail;
break;
case 3:
state = SSDKResponseState.Cancel;
break;
}
return state;
}
}
import './sharesdk_defines.dart';
/// const
const String kText = "text";
const String kThumbImage = "thumb_image";
const String kImages = "images";
const String kImageUrlAndroid = "imageUrl_android";
const String kImagePathAndroid = "imagePath_android";
const String kTitleUrlAndroid = "titleUrl_android";
const String kMusicUrlAndroid = "musicUrl_android";
const String kVideoUrlAndroid = "videoUrl_android";
const String kUrl = "url";
const String kType = "type";
const String kLat = "lat";
const String kLong = "long";
const String kTitle = "title";
const String kAudioUrl = "audio_url";
const String kExtension = "ext_info";
const String kFile = "file_data";
const String kEmoticon = "emoticon_data";
const String kWeChatScene = "wechat_scene";
const String kWeiboObjectId = "object_id";
const String kWeiboIsStory = "sina_isStory";
const String kAttachments = "attachments";
const String kRecipients = "recipients";
const String kCCRecipients = "cc_recipients";
const String kBCCRecipients = "bcc_recipients";
const String kDesc = "desc";
const String kAlbumId = "album_id";
const String kTags = "tags";
const String kTweetId = "tweet_id";
const String kDeepLinkId = "deep_link_id";
const String kMenuDisplayX = "menu_display_x";
const String kMenuDisplayY = "menu_display_y";
const String kVisibility = "visibility";
const String kBlogName = "blog_name";
const String kIsPublic = "is_public";
const String kIsFriend = "is_friend";
const String kIsFamily = "is_family";
const String kSafetyLevel = "safety_level";
const String kContentType = "content_type";
const String kHidden = "hidden";
const String kAudio = "audio";
const String kVideo = "video";
const String kSource = "source";
const String kAuthor = "author";
const String kNoteBook = "notebook";
const String kBoard = "board";
const String kPermission = "permission";
const String kTemplateId = "templateId";
const String kTemplateArgs = "templateArgs";
const String kEnableShare = "enable_share";
const String kAndroidExecParam = "android_exec_param";
const String kIPhoneExecParam = "iphone_exec_param";
const String kGroupId = "group_id";
const String kPrivateFromSource = "private_from_source";
const String kFolderId = "folder_id";
const String kResolveFinalUrl = "resolve_final_url";
const String kComment = "comment";
const String kUid = "uid";
const String kWeChatFile = "source_file";
const String kWeChatFileExtension = "source_extension";
const String kAudioFlashURL = "audio_flash_url";
const String kVideoFlashURL = "video_flash_url";
const String kVideoAssetURL = "video_asset_url";
const String kURLName = "url_name";
const String kPrivacyStatus = "privacy_status";
const String kYouTubeParts = "youtube_parts";
const String kYouTubeJsonString = "youtube_json_string";
const String kWXMPUserName = "wxmp_user_name";
const String kWXMPPath = "wxmp_path";
const String kWXMPWithTicket = "wxmp_with_ticket";
const String kWXMPType = "wxmp_type";
const String kWXMPHdThumbImage = "wxmp_hdthumbimage";
const String kFacebookHashtag = "facebook_hashtag";
const String kFacebookQuote = "facebook_quote";
const String ksina_summary = "sina_cardSummary";
const String ksina_displayname = "sina_displayname";
const String ksina_cardTitle = "sina_cardTitle";
const String ksina_linkcard = "sina_linkCard";
const String kimage_url = "image_url";
const String kimage_x = "image_x";
const String kimage_y = "image_y";
const String ksite = "site";
const String ksiteUrl = "siteUrl";
/// Set sharing parameters map
class SSDKMap {
final Map map = {};
/// Set common share parameters
void setGeneral(
String title,
String text,
dynamic images,
String imageUrlAndroid,
String imagePathAndroid,
String url,
String titleUrlAndroid,
String musicUrlAndroid,
String videoUrlAndroid,
SSDKContentType contentType) {
map[kType] = contentType.value;
map[kText] = text;
map[kTitle] = title;
map[kImages] = images;
map[kUrl] = url;
map[kTitleUrlAndroid] = titleUrlAndroid;
map[kMusicUrlAndroid] = musicUrlAndroid;
map[kVideoUrlAndroid] = videoUrlAndroid;
map[kImageUrlAndroid] = imageUrlAndroid;
map[kImagePathAndroid] = imagePathAndroid;
}
/// Set wechat platform share parameters
void setWechat(
String text,
String title,
String url,
String thumbImage,
dynamic images,
String musicFileURL,
String extInfo,
String fileData,
String emoticonData,
String fileExtension,
String sourceFileData,
SSDKContentType contentType,
ShareSDKPlatform subPlatform) {
Map params = {};
params[kType] = contentType.value;
params[kText] = text;
params[kTitle] = title;
params[kUrl] = url;
params[kThumbImage] = thumbImage;
params[kImages] = images;
params[kAudioUrl] = musicFileURL;
params[kExtension] = extInfo;
params[kFile] = fileData;
params[kWeChatFileExtension] = fileExtension;
params[kWeChatFile] = sourceFileData;
params[kEmoticon] = emoticonData;
int id = subPlatform.id;
map["@platform($id)"] = params;
}
/// Set wechat mini program share parameters
void setWeChatMiniProgram(
String title,
String desc,
String webUrl,
String path,
String thumbImage,
String hdThumbImage,
String imageUrlAndroid,
String userName,
bool withShareTicket,
int miniProgramType,
ShareSDKPlatform subPlatform) {
Map params = {};
params[kType] = SSDKContentTypes.miniProgram.value;
params[kTitle] = title;
params[kUrl] = webUrl;
params[kWXMPUserName] = userName;
params[kWXMPPath] = path;
params[kThumbImage] = thumbImage;
params[kWXMPHdThumbImage] = hdThumbImage;
params[kWXMPType] = miniProgramType;
params[kWXMPWithTicket] = withShareTicket;
params[kImageUrlAndroid] = imageUrlAndroid;
int id = subPlatform.id;
map["@platform($id)"] = params;
}
/// Set QQ platform share parameters
void setQQ(
String text,
String title,
String url,
String audio,
String video,
String musicUrl,
String videoUrl,
String thumbImage,
dynamic images,
String imageUrlAndroid,
String imagePathAndroid,
String titleUrlAndroid,
String siteAndroid,
String siteUrlAndroid,
SSDKContentType type,
ShareSDKPlatform subPlatform) {
Map params = {};
params[kType] = type.value;
params[kText] = text;
params[kTitle] = title;
params[kTitleUrlAndroid] = titleUrlAndroid;
params[kUrl] = url;
params[kMusicUrlAndroid] = musicUrl;
params[kVideoUrlAndroid] = videoUrl;
params[kAudioFlashURL] = audio;
params[kVideoFlashURL] = video;
params[kThumbImage] = thumbImage;
params[kImages] = images;
params[kImageUrlAndroid] = imageUrlAndroid;
params[kImagePathAndroid] = imagePathAndroid;
params[ksite] = siteAndroid;
params[ksiteUrl] = siteUrlAndroid;
int id = subPlatform.id;
map["@platform($id)"] = params;
}
/// Set sina platform share parameters
void setSina(
String text,
String title,
images,
String video,
String url,
double latitude,
double longitude,
String objectId,
bool isStory,
String imageUrl,
String imagePath,
SSDKContentType type) {
Map params = {};
params[kType] = type.value;
params[kText] = text;
params[kImages] = images;
params[kTitle] = title;
params[kVideo] = video;
params[kUrl] = url;
params[kLat] = latitude;
params[kLong] = longitude;
params[kWeiboIsStory] = isStory;
params[kWeiboObjectId] = objectId;
params[kImagePathAndroid] = imageUrl;
params[kImageUrlAndroid] = imagePath;
int id = ShareSDKPlatforms.sina.id;
map["@platform($id)"] = params;
}
void setSinaLinkCard(
// linkCard
String text,
String title,
String url,
String sinaSummary,
String imageUrl,
String imageX,
String imageY,
) {
Map params = {};
params[kText] = text;
params[ksina_cardTitle] = title;
params[ksina_displayname] = title;
params[ksina_summary] = sinaSummary;
params[kUrl] = url;
params[ksina_linkcard] = true;
params[kimage_url] = imageUrl;
params[kimage_x] = imageX;
params[kimage_y] = imageY;
params[kType] = SSDKContentTypes.webpage.value;
int id = ShareSDKPlatforms.sina.id;
map["@platform($id)"] = params;
}
/// Set twitter platform share parameters
void setTwitter(String text, images, String video, double latitude,
double longitude, SSDKContentType type) {
Map params = {};
params[kText] = text;
params[kType] = type.value;
params[kImages] = images;
params[kLat] = latitude;
params[kLong] = longitude;
params[kVideo] = video;
int id = ShareSDKPlatforms.twitter.id;
map["@platform($id)"] = params;
}
/// Set facebook platform share parameters
void setFacebook(
String text,
images,
String url,
String urlTitle,
String urlName,
String attachementUrl,
String hasTag,
String quote,
SSDKContentType type) {
Map params = {};
params[kType] = type.value;
params[kText] = text;
params[kImages] = images;
if (url.contains("assets-library")) {
params[kVideoAssetURL] = url;
} else {
params[kUrl] = url;
}
params[kTitle] = urlTitle;
params[kURLName] = urlName;
params[kAttachments] = attachementUrl;
params[kFacebookHashtag] = hasTag;
params[kFacebookQuote] = quote;
int id = ShareSDKPlatforms.facebook.id;
map["@platform($id)"] = params;
}
}
import './sharesdk_defines.dart';
/// Model used to register the platforms
class ShareSDKRegister {
static const String _ssdkAppkey = "app_key";
static const String _ssdkAppId = "app_id";
static const String _ssdkConsumerKey = "consumer_key";
static const String _ssdkApikey = "api_key";
static const String _ssdkClientId = "client_id";
static const String _ssdkRestApiKey = "rest_api_key";
static const String _ssdkApplicationId = "application_id";
static const String _ssdkClientSecret = "client_secret";
static const String _ssdkConsumerSecret = "consumer_secret";
static const String _ssdkAppSecret = "app_secret";
static const String _ssdkSecretKey = "secret_key";
static const String _ssdkApiSecret = "api_secret";
static const String _ssdkRedirectUrl = "redirect_uri";
static const String _ssdkOAuthCallback = "oauth_callback";
static const String _ssdkDisplayName = "display_name";
static const String _ssdkSandbox = "sandbox_mode";
final Map platformsInfo = {};
/// set up sina platform info
void setupSinaWeibo(String appkey, String appSecret, String redirectUrl) {
Map info = {
_ssdkAppkey: appkey,
_ssdkAppSecret: appSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.sina.id] = info;
}
/// set up wechat platform info
void setupWechat(String appId, String appSecret) {
Map info = {_ssdkAppId: appId, _ssdkAppSecret: appSecret};
platformsInfo[ShareSDKPlatforms.wechatSeries.id] = info;
}
/// set up qq platform info
void setupQQ(String appId, String appkey) {
Map info = {_ssdkAppId: appId, _ssdkAppkey: appkey};
platformsInfo[ShareSDKPlatforms.qqSeries.id] = info;
}
/// set up twitter platform info
void setupTwitter(
String consumerKey, String consumerSecret, String redirectUrl) {
Map info = {
_ssdkConsumerKey: consumerKey,
_ssdkConsumerSecret: consumerSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.twitter.id] = info;
}
/// set up facebook platform info
void setupFacebook(String appkey, String appSecret, String displayName) {
Map info = {
_ssdkApikey: appkey,
_ssdkAppSecret: appSecret,
_ssdkDisplayName: displayName
};
platformsInfo[ShareSDKPlatforms.facebook.id] = info;
}
/// set up TencentWeibo platform info
void setupTencentWeibo(String appkey, String appSecret, String redirectUrl) {
Map info = {
_ssdkAppkey: appkey,
_ssdkAppSecret: appSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.tencentWeibo.id] = info;
}
/// set up yixin platform info
void setupYiXin(String appid, String appSecret, String redirectUrl) {
Map info = {
_ssdkAppId: appid,
_ssdkAppSecret: appSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.yixinSeries.id] = info;
}
/// set up evernote platform info
void setupEvernote(String consumerKey, String consumerSecret, bool sandbox) {
Map info = {
_ssdkConsumerKey: consumerKey,
_ssdkConsumerSecret: consumerSecret,
_ssdkSandbox: sandbox
};
platformsInfo[ShareSDKPlatforms.yinXiang.id] = info;
}
/// set up douban platform info
void setupDouBan(String apikey, String appSecret, String redirectUrl) {
Map info = {
_ssdkApikey: apikey,
_ssdkAppSecret: appSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.douBan.id] = info;
}
/// set up kaixin platform info
void setupKaiXin(String apikey, String appSecret, String redirectUrl) {
Map info = {
_ssdkApikey: apikey,
_ssdkSecretKey: appSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.kaixin.id] = info;
}
/// set up pocket platform info
void setupPocket(String consumerKey, String redirectUrl) {
Map info = {_ssdkConsumerKey: consumerKey, _ssdkRedirectUrl: redirectUrl};
platformsInfo[ShareSDKPlatforms.pocket.id] = info;
}
/// set up google+ platform info
void setupGooglePlus(
String clientId, String clientSecret, String redirectUrl) {
Map info = {
_ssdkClientId: clientId,
_ssdkClientSecret: clientSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.googlePlus.id] = info;
}
/// set up Instagram platform info
void setupInstagram(
String clientId, String clientSecret, String redirectUrl) {
Map info = {
_ssdkClientId: clientId,
_ssdkClientSecret: clientSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.instagram.id] = info;
}
/// set up linkedin platform info
void setupLinkedIn(String apikey, String appSecret, String redirectUrl) {
Map info = {
_ssdkApikey: apikey,
_ssdkSecretKey: appSecret,
"redirect_url": redirectUrl
};
platformsInfo[ShareSDKPlatforms.linkedIn.id] = info;
}
/// set up tumblr platform info
void setupTumblr(
String consumerKey, String consumerSecret, String redirectUrl) {
Map info = {
_ssdkConsumerKey: consumerKey,
_ssdkConsumerSecret: consumerSecret,
"callback_url": redirectUrl
};
platformsInfo[ShareSDKPlatforms.tumblr.id] = info;
}
/// set up flick platform info
void setupFlick(String apikey, String apiSecret) {
Map info = {
_ssdkApikey: apikey,
_ssdkApiSecret: apiSecret,
};
platformsInfo[ShareSDKPlatforms.flickr.id] = info;
}
/// set up youdao platform info
void setupYouDao(
String consumerKey, String consumerSecret, String oauthCallback) {
Map info = {
_ssdkConsumerKey: consumerKey,
_ssdkConsumerSecret: consumerSecret,
_ssdkOAuthCallback: oauthCallback
};
platformsInfo[ShareSDKPlatforms.youdaoNote.id] = info;
}
/// set up alisocial platform info
void setupAliSocial(String appId) {
Map info = {
_ssdkAppId: appId,
};
platformsInfo[ShareSDKPlatforms.aliSocial.id] = info;
}
/// set up Pinterest platform info
void setupPinterest(String clientId) {
Map info = {
_ssdkClientId: clientId,
};
platformsInfo[ShareSDKPlatforms.pinterest.id] = info;
}
/// set up linkedin kakao info
void setupKakao(String appkey, String restApiKey, String redirectUrl) {
Map info = {
_ssdkAppkey: appkey,
_ssdkRestApiKey: restApiKey,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.kakaoSeries.id] = info;
}
/// set up dropbox platform info
void setupDropbox(String appkey, String appSecret, String redirectUrl) {
Map info = {
_ssdkAppkey: appkey,
_ssdkAppSecret: appSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.dropbox.id] = info;
}
/// set up VKontakte platform info
void setupVKontakte(String applicationId, String secretKey) {
Map info = {
_ssdkApplicationId: applicationId,
_ssdkSecretKey: secretKey,
};
platformsInfo[ShareSDKPlatforms.vKontakte.id] = info;
}
/// set up Instapaper platform info
void setupInstapaper(String consumerKey, String consumerSecret) {
Map info = {
_ssdkConsumerKey: consumerKey,
_ssdkConsumerSecret: consumerSecret,
};
platformsInfo[ShareSDKPlatforms.instapaper.id] = info;
}
/// set up DingTalk platform info
void setupDingTalk(String appId) {
Map info = {
_ssdkAppId: appId,
};
platformsInfo[ShareSDKPlatforms.dingding.id] = info;
}
/// set up meipai platform info
void setupMeiPai(String appkey) {
Map info = {
_ssdkAppkey: appkey,
};
platformsInfo[ShareSDKPlatforms.meiPai.id] = info;
}
/// set up youtube platform info
void setupYouTube(String clientId, String clientSecret, String redirectUrl) {
Map info = {
_ssdkClientId: clientId,
_ssdkClientSecret: clientSecret,
_ssdkRedirectUrl: redirectUrl
};
platformsInfo[ShareSDKPlatforms.youtube.id] = info;
}
/// set up telegram platform info
void setupTelegram(String botToken, String botDomain) {
Map info = {
"bot_token": botToken,
"bot_domain": botDomain,
};
platformsInfo[ShareSDKPlatforms.telegram.id] = info;
}
/// set up reddit platform info
void setupReddit(String appkey, String redirectUrl) {
Map info = {
_ssdkAppkey: appkey,
_ssdkRedirectUrl: redirectUrl,
};
platformsInfo[ShareSDKPlatforms.reddit.id] = info;
}
/// set up reddit platform info
void setupDouyin(String appkey, String appSecret) {
Map info = {
_ssdkAppkey: appkey,
_ssdkAppSecret: appSecret,
};
platformsInfo[ShareSDKPlatforms.douyin.id] = info;
}
}
# Generated by pub
# See https://www.dartlang.org/tools/pub/glossary#lockfile
packages:
async:
dependency: transitive
description:
name: async
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.2.0"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.4"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.2"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.14.11"
flutter:
dependency: "direct main"
description: flutter
source: sdk
version: "0.0.0"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.12.5"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.6"
path:
dependency: transitive
description:
name: path
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.6.2"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.5.0"
quiver:
dependency: transitive
description:
name: quiver
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.3"
sky_engine:
dependency: transitive
description: flutter
source: sdk
version: "0.0.99"
source_span:
dependency: transitive
description:
name: source_span
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.5.5"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.9.3"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.0"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.4"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.0"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.2.5"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.1.6"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.flutter-io.cn"
source: hosted
version: "2.0.8"
sdks:
dart: ">=2.2.0 <3.0.0"
name: flutter_sharesdk
description: A new flutter plugin project.
version: 0.0.1
author:
homepage:
environment:
sdk: ">=2.1.0 <3.0.0"
dependencies:
flutter:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# This section identifies this Flutter project as a plugin project.
# The androidPackage and pluginClass identifiers should not ordinarily
# be modified. They are used by the tooling to maintain consistency when
# adding or updating assets for this project.
plugin:
androidPackage: com.example.flutter_sharesdk
pluginClass: FlutterSharesdkPlugin
# To add assets to your plugin package, add an assets section, like this:
# assets:
# - images/a_dot_burr.jpeg
# - images/a_dot_ham.jpeg
#
# For details regarding assets in packages, see
# https://flutter.dev/assets-and-images/#from-packages
#
# An image asset can refer to one or more resolution-specific "variants", see
# https://flutter.dev/assets-and-images/#resolution-aware.
# To add custom fonts to your plugin package, add a fonts section here,
# in this "flutter" section. Each entry in this list should have a
# "family" key with the font family name, and a "fonts" key with a
# list giving the asset and other descriptors for the font. For
# example:
# fonts:
# - family: Schyler
# fonts:
# - asset: fonts/Schyler-Regular.ttf
# - asset: fonts/Schyler-Italic.ttf
# style: italic
# - family: Trajan Pro
# fonts:
# - asset: fonts/TrajanPro.ttf
# - asset: fonts/TrajanPro_Bold.ttf
# weight: 700
#
# For details regarding fonts in packages, see
# https://flutter.dev/custom-fonts/#from-packages
import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_sharesdk/flutter_sharesdk.dart';
void main() {
const MethodChannel channel = MethodChannel('flutter_sharesdk');
setUp(() {
channel.setMockMethodCallHandler((MethodCall methodCall) async {
return '42';
});
});
tearDown(() {
channel.setMockMethodCallHandler(null);
});
test('getPlatformVersion', () async {
// expect(await FlutterSharesdk.platformVersion, '42');
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment