PhizClip Flutter DEMO
๐ https://www.phizclip.com/ ๐
[Home Page](https://www.finclip.com/) | [Example Mini-App](https://www.finclip.com/#/market) | [Documentation](https://www.finclip.com/mop/document/) | [Deployment Guide](https://www.finclip.com/mop/document/introduce/quickStart/cloud-server-deployment-guide.html)
[SDK Integration Guide](https://www.finclip.com/mop/document/introduce/quickStart/intergration-guide.html) | [API List](https://www.finclip.com/mop/document/develop/api/overview.html) | [Component List](https://www.finclip.com/mop/document/develop/component/overview.html) | [Privacy Commitment](https://www.finclip.com/mop/document/operate/safety.html)
-----
## ๐ค What is PhizClip?
Have you ever **thought** that the developed WeChat Mini-App can be put in your own APP to run directly, and you only need to develop the Mini-App once, and then you can open it in different applications, isn't it incredible?
Have you ever **tried** to introduce an SDK in your own APP, and you can not only open the Mini-App in the app, but also customize the Mini-App interface and modify the Mini-App style, don't you think it is more incredible?
**This is PhizClip, with much INCREDIBLE !**
## โ๏ธ Flutter integration
In the project `pubspec.yaml` add a dependency to the file
```yaml
mop: latest.version
```
## ๐ฅ Example
```flutter
import 'package:flutter/material.dart';
import 'dart:async';
import 'dart:io';
import 'package:mop/mop.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State {
@override
void initState() {
super.initState();
init();
}
// Platform messages are asynchronous, so we initialize in an async method.
Future init() async {
if (Platform.isiOS) {
//com.PhizClip.mopExample
final res = await Mop.instance.initialize(
'22LyZEib0gLTQdU3MUauARlLry7JL/2fRpscC9kpGZQA', '1c11d7252c53e0b6',
apiServer: 'https://api.finclip.com', apiPrefix: '/api/v1/mop');
print(res);
} else if (Platform.isAndroid) {
//com.PhizClip.mopexample
final res = await Mop.instance.initialize(
'22LyZEib0gLTQdU3MUauARjmmp6QmYgjGb3uHueys1oA', '98c49f97a031b555',
apiServer: 'https://api.finclip.com', apiPrefix: '/api/v1/mop');
print(res);
}
if (!mounted) return;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('PhizClip Flutter plug-in'),
),
body: Center(
child: Container(
padding: EdgeInsets.only(
top: 20,
),
child: Column(
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(5)),
gradient: LinearGradient(
colors: const [Color(0xFF12767e), Color(0xFF0dabb8)],
stops: const [0.0, 1.0],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
child: FlatButton(
onPressed: () {
Mop.instance.openApplet('5e3c147a188211000141e9b1');
},
child: Text(
'Open the sample applet',
style: TextStyle(color: Colors.white),
),
),
),
SizedBox(height: 30),
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(5)),
gradient: LinearGradient(
colors: const [Color(0xFF12767e), Color(0xFF0dabb8)],
stops: const [0.0, 1.0],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
),
),
child: FlatButton(
onPressed: () {
Mop.instance.openApplet('5e4d123647edd60001055df1',sequence: 1);
},
child: Text(
'Open the official applet',
style: TextStyle(color: Colors.white),
),
),
),
],
),
),
),
),
);
}
}
```
## ๐ Directory structure
```
.
โโโ LICENSE
โโโ README.md
โโโ android Android project directory
โย ย โโโ app
โย ย โย ย โโโ build.gradle Application build configuration
โย ย โย ย โโโ src
โย ย โย ย โโโ debug
โย ย โย ย โย ย โโโ AndroidManifest.xml Application manifest file
โย ย โย ย โโโ main Application source directory
โย ย โย ย โย ย โโโ AndroidManifest.xml Application manifest file
โย ย โย ย โย ย โโโ java Application source directory
โย ย โย ย โย ย โย ย โโโ com
โย ย โย ย โย ย โย ย โย ย โโโ finogeeks
โย ย โย ย โย ย โย ย โย ย โโโ mop_demo
โย ย โย ย โย ย โย ย โย ย โโโ MainActivity.java
โย ย โย ย โย ย โย ย โโโ io
โย ย โย ย โย ย โย ย โโโ flutter
โย ย โย ย โย ย โย ย โโโ plugins
โย ย โย ย โย ย โย ย โโโ GeneratedPluginRegistrant.java
โย ย โย ย โย ย โโโ res Resource file directory
โย ย โย ย โย ย โโโ drawable darwable Resource directory
โย ย โย ย โย ย โย ย โโโ launch_background.xml
โย ย โย ย โย ย โโโ mipmap-hdpi Picture resource directory
โย ย โย ย โย ย โย ย โโโ ic_launcher.png
โย ย โย ย โย ย โโโ mipmap-mdpi Picture resource directory
โย ย โย ย โย ย โย ย โโโ ic_launcher.png
โย ย โย ย โย ย โโโ mipmap-xhdpi Picture resource directory
โย ย โย ย โย ย โย ย โโโ ic_launcher.png
โย ย โย ย โย ย โโโ mipmap-xxhdpi Picture resource directory
โย ย โย ย โย ย โย ย โโโ ic_launcher.png
โย ย โย ย โย ย โโโ mipmap-xxxhdpi Picture resource directory
โย ย โย ย โย ย โย ย โโโ ic_launcher.png
โย ย โย ย โย ย โโโ values
โย ย โย ย โย ย โโโ styles.xml
โย ย โย ย โโโ profile
โย ย โย ย โโโ AndroidManifest.xml
โย ย โโโ build.gradle
โย ย โโโ gradle gradle version configuration directory, which is generally not required
โย ย โย ย โโโ wrapper
โย ย โย ย โโโ gradle-wrapper.properties
โย ย โโโ gradle.properties
โย ย โโโ local.properties
โย ย โโโ settings.gradle
โโโ build
โโโ doc
โย ย โโโ mop_flutter_demo.gif
โโโ ios iOS Project Directory
โย ย โโโ Flutter Flutter-SDK directory, generally no concern
โย ย โย ย โโโ AppFrameworkInfo.plist
โย ย โย ย โโโ Debug.xcconfig
โย ย โย ย โโโ Flutter.framework
โย ย โย ย โโโ Flutter.podspec
โย ย โย ย โโโ Generated.xcconfig
โย ย โย ย โโโ Release.xcconfig
โย ย โย ย โโโ flutter_export_environment.sh
โย ย โโโ Podfile pod dependency configuration file
โย ย โโโ Runner iOS source home directory
โย ย โย ย โโโ AppDelegate.h
โย ย โย ย โโโ AppDelegate.m
โย ย โย ย โโโ Assets.xcassets Picture resource
โย ย โย ย โย ย โโโ AppIcon.appiconset Icon
โย ย โย ย โย ย โโโ LaunchImage.imageset Start-up diagram
โย ย โย ย โโโ Base.lproj
โย ย โย ย โย ย โโโ LaunchScreen.storyboard
โย ย โย ย โย ย โโโ Main.storyboard
โย ย โย ย โโโ FATFlutterViewController.h Flutter page controller subclass
โย ย โย ย โโโ FATFlutterViewController.m Flutter page controller subclass
โย ย โย ย โโโ GeneratedPluginRegistrant.h
โย ย โย ย โโโ GeneratedPluginRegistrant.m
โย ย โย ย โโโ Info.plist iOS project profile
โย ย โย ย โโโ main.m
โย ย โโโ Runner.xcodeproj
โโโ lib Flutter source directory
โย ย โโโ main.dart Home page
โย ย โโโ wx_pay.dart Wechat Pay source code
โโโ pubspec.lock
โโโ pubspec.yaml Flutter profile
โโโ test
โโโ widget_test.dart
```
## ๐ Interface document
### 1. Initialize the applet
The SDK must be initialized before using the apis provided by the SDK. The interfaces for initializing the SDK are as follows
```
///
/// initialize mop miniprogram engine.
/// Initialize the applet
/// [appkey] is required. it can be getted from api.phizclip.com
/// [secret] is required. it can be getted from api.phizclip.com
/// [apiServer] is optional. the mop server address. default is https://mp.finogeek.com
/// [apiPrefix] is optional. the mop server prefix. default is /api/v1/mop
///
///
Future