├── .DS_Store
├── .flutter-plugins
├── .idea
├── codeStyles
│ └── Project.xml
├── deepak_flutter.iml
├── libraries
│ ├── Dart_Packages.xml
│ ├── Dart_SDK.xml
│ └── Flutter_Plugins.xml
├── misc.xml
├── modules.xml
├── vcs.xml
└── workspace.xml
├── .packages
├── README.md
├── android
├── .gitignore
├── .idea
│ ├── caches
│ │ └── build_file_checksums.ser
│ ├── codeStyles
│ │ └── Project.xml
│ ├── gradle.xml
│ ├── misc.xml
│ ├── modules.xml
│ └── runConfigurations.xml
├── app
│ ├── build.gradle
│ └── src
│ │ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── java
│ │ └── com
│ │ │ └── aeologic
│ │ │ └── fluttervideorecorderapp
│ │ │ └── MainActivity.java
│ │ └── res
│ │ ├── drawable
│ │ └── launch_background.xml
│ │ ├── 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
│ │ └── values
│ │ └── styles.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew.bat
└── settings.gradle
├── assets
└── images
│ ├── ic_camera_preview.png
│ ├── ic_flutter_devs_logo.png
│ ├── ic_no_video.png
│ ├── ic_play.png
│ ├── ic_powered_by.png
│ ├── ic_stop_video.png
│ ├── ic_switch_camera_3.png
│ ├── ic_video_icon.png
│ └── ic_video_shutter.png
├── flutter_video_recorder_app.iml
├── flutter_video_recorder_app_android.iml
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-App-1024x1024@1x.png
│ │ ├── 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-83.5x83.5@2x.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── main.m
├── lib
├── constant
│ └── Constant.dart
├── generated
│ └── i18n.dart
├── main.dart
├── screen
│ ├── CameraHomeScreen.dart
│ ├── HomeScreen.dart
│ ├── SplashScreen.dart
│ └── VideoPlayerScreen.dart
└── utility
│ └── DiagonalClipper.dart
├── pubspec.lock
├── pubspec.yaml
├── res
└── values
│ └── strings_en.arb
├── screens
├── android1.jpg
├── android2.jpg
├── android3.jpg
├── demo.gif
├── iphone1.jpg
├── iphone2.jpg
└── iphone3.jpg
└── test
└── widget_test.dart
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/.DS_Store
--------------------------------------------------------------------------------
/.flutter-plugins:
--------------------------------------------------------------------------------
1 | camera=C:\\Users\\ashish\\AppData\\Local\\Android\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\camera-0.2.9+1\\
2 | image_picker=C:\\Users\\ashish\\AppData\\Local\\Android\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\image_picker-0.4.12+1\\
3 | path_provider=C:\\Users\\ashish\\AppData\\Local\\Android\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\path_provider-0.4.1\\
4 | video_player=C:\\Users\\ashish\\AppData\\Local\\Android\\flutter\\.pub-cache\\hosted\\pub.dartlang.org\\video_player-0.7.2\\
5 |
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/.idea/deepak_flutter.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/.idea/libraries/Dart_Packages.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
--------------------------------------------------------------------------------
/.idea/libraries/Dart_SDK.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/.idea/libraries/Flutter_Plugins.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 | 1542611418406
190 |
191 |
192 | 1542611418406
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
--------------------------------------------------------------------------------
/.packages:
--------------------------------------------------------------------------------
1 | # Generated by pub on 2019-01-22 11:46:36.248213.
2 | async:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.0.8/lib/
3 | boolean_selector:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-1.0.4/lib/
4 | camera:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/camera-0.2.9+1/lib/
5 | charcode:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/charcode-1.1.2/lib/
6 | collection:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.14.11/lib/
7 | cupertino_icons:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-0.1.2/lib/
8 | flutter:file:///C:/Users/ashish/AppData/Local/Android/flutter/packages/flutter/lib/
9 | flutter_test:file:///C:/Users/ashish/AppData/Local/Android/flutter/packages/flutter_test/lib/
10 | image_picker:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/image_picker-0.4.12+1/lib/
11 | matcher:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.3+1/lib/
12 | meta:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.1.6/lib/
13 | path:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.6.2/lib/
14 | path_provider:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-0.4.1/lib/
15 | quiver:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/quiver-2.0.1/lib/
16 | sky_engine:file:///C:/Users/ashish/AppData/Local/Android/flutter/bin/cache/pkg/sky_engine/lib/
17 | source_span:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.4.1/lib/
18 | stack_trace:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.9.3/lib/
19 | stream_channel:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-1.6.8/lib/
20 | string_scanner:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.0.4/lib/
21 | term_glyph:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.0.1/lib/
22 | test_api:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.2.1/lib/
23 | typed_data:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.1.6/lib/
24 | vector_math:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.0.8/lib/
25 | video_player:file:///C:/Users/ashish/AppData/Local/Android/flutter/.pub-cache/hosted/pub.dartlang.org/video_player-0.7.2/lib/
26 | flutter_video_recorder_app:lib/
27 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Flutter Video Recorder Demo
2 |
3 | A Flutter app to showcase Video Recorder demo.
4 |
5 | # Demo
6 |
7 |
8 |
9 |
10 | # Android Screen
11 |
12 |
13 |
14 | # iOS Screen
15 |
16 |
17 |
18 |
19 | ## Getting Started
20 |
21 | For help getting started with Flutter, view our online
22 | [documentation](https://flutter.io/).
23 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | *.class
3 | .gradle
4 | /local.properties
5 | /.idea/workspace.xml
6 | /.idea/libraries
7 | .DS_Store
8 | /build
9 | /captures
10 | GeneratedPluginRegistrant.java
11 |
--------------------------------------------------------------------------------
/android/.idea/caches/build_file_checksums.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/android/.idea/caches/build_file_checksums.ser
--------------------------------------------------------------------------------
/android/.idea/codeStyles/Project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/android/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/android/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/android/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | def localProperties = new Properties()
2 | def localPropertiesFile = rootProject.file('local.properties')
3 | if (localPropertiesFile.exists()) {
4 | localPropertiesFile.withReader('UTF-8') { reader ->
5 | localProperties.load(reader)
6 | }
7 | }
8 |
9 | def flutterRoot = localProperties.getProperty('flutter.sdk')
10 | if (flutterRoot == null) {
11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12 | }
13 |
14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
15 | if (flutterVersionCode == null) {
16 | flutterVersionCode = '1'
17 | }
18 |
19 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
20 | if (flutterVersionName == null) {
21 | flutterVersionName = '1.0'
22 | }
23 |
24 | apply plugin: 'com.android.application'
25 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
26 |
27 | android {
28 | compileSdkVersion 27
29 |
30 | lintOptions {
31 | disable 'InvalidPackage'
32 | }
33 |
34 | defaultConfig {
35 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
36 | applicationId "com.aeologic.fluttervideorecorderapp"
37 | minSdkVersion 21
38 | targetSdkVersion 27
39 | versionCode flutterVersionCode.toInteger()
40 | versionName flutterVersionName
41 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
42 | }
43 |
44 | buildTypes {
45 | release {
46 | // TODO: Add your own signing config for the release build.
47 | // Signing with the debug keys for now, so `flutter run --release` works.
48 | signingConfig signingConfigs.debug
49 | }
50 | }
51 | }
52 |
53 | flutter {
54 | source '../..'
55 | }
56 |
57 | dependencies {
58 | testImplementation 'junit:junit:4.12'
59 | androidTestImplementation 'com.android.support.test:runner:1.0.2'
60 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
61 | }
62 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
8 |
9 |
10 |
15 |
19 |
26 |
30 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/android/app/src/main/java/com/aeologic/fluttervideorecorderapp/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.aeologic.fluttervideorecorderapp;
2 |
3 | import android.os.Bundle;
4 | import io.flutter.app.FlutterActivity;
5 | import io.flutter.plugins.GeneratedPluginRegistrant;
6 |
7 | public class MainActivity extends FlutterActivity {
8 | @Override
9 | protected void onCreate(Bundle savedInstanceState) {
10 | super.onCreate(savedInstanceState);
11 | GeneratedPluginRegistrant.registerWith(this);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | google()
4 | jcenter()
5 | }
6 |
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:3.1.2'
9 | }
10 | }
11 |
12 | allprojects {
13 | repositories {
14 | google()
15 | jcenter()
16 | }
17 | }
18 |
19 | rootProject.buildDir = '../build'
20 | subprojects {
21 | project.buildDir = "${rootProject.buildDir}/${project.name}"
22 | }
23 | subprojects {
24 | project.evaluationDependsOn(':app')
25 | }
26 |
27 | task clean(type: Delete) {
28 | delete rootProject.buildDir
29 | }
30 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/android/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/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-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/android/gradlew.bat:
--------------------------------------------------------------------------------
1 | @if "%DEBUG%" == "" @echo off
2 | @rem ##########################################################################
3 | @rem
4 | @rem Gradle startup script for Windows
5 | @rem
6 | @rem ##########################################################################
7 |
8 | @rem Set local scope for the variables with windows NT shell
9 | if "%OS%"=="Windows_NT" setlocal
10 |
11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
12 | set DEFAULT_JVM_OPTS=
13 |
14 | set DIRNAME=%~dp0
15 | if "%DIRNAME%" == "" set DIRNAME=.
16 | set APP_BASE_NAME=%~n0
17 | set APP_HOME=%DIRNAME%
18 |
19 | @rem Find java.exe
20 | if defined JAVA_HOME goto findJavaFromJavaHome
21 |
22 | set JAVA_EXE=java.exe
23 | %JAVA_EXE% -version >NUL 2>&1
24 | if "%ERRORLEVEL%" == "0" goto init
25 |
26 | echo.
27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
28 | echo.
29 | echo Please set the JAVA_HOME variable in your environment to match the
30 | echo location of your Java installation.
31 |
32 | goto fail
33 |
34 | :findJavaFromJavaHome
35 | set JAVA_HOME=%JAVA_HOME:"=%
36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
37 |
38 | if exist "%JAVA_EXE%" goto init
39 |
40 | echo.
41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
42 | echo.
43 | echo Please set the JAVA_HOME variable in your environment to match the
44 | echo location of your Java installation.
45 |
46 | goto fail
47 |
48 | :init
49 | @rem Get command-line arguments, handling Windowz variants
50 |
51 | if not "%OS%" == "Windows_NT" goto win9xME_args
52 | if "%@eval[2+2]" == "4" goto 4NT_args
53 |
54 | :win9xME_args
55 | @rem Slurp the command line arguments.
56 | set CMD_LINE_ARGS=
57 | set _SKIP=2
58 |
59 | :win9xME_args_slurp
60 | if "x%~1" == "x" goto execute
61 |
62 | set CMD_LINE_ARGS=%*
63 | goto execute
64 |
65 | :4NT_args
66 | @rem Get arguments from the 4NT Shell from JP Software
67 | set CMD_LINE_ARGS=%$
68 |
69 | :execute
70 | @rem Setup the command line
71 |
72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
73 |
74 | @rem Execute Gradle
75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
76 |
77 | :end
78 | @rem End local scope for the variables with windows NT shell
79 | if "%ERRORLEVEL%"=="0" goto mainEnd
80 |
81 | :fail
82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
83 | rem the _cmd.exe /c_ return code!
84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
85 | exit /b 1
86 |
87 | :mainEnd
88 | if "%OS%"=="Windows_NT" endlocal
89 |
90 | :omega
91 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
4 |
5 | def plugins = new Properties()
6 | def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
7 | if (pluginsFile.exists()) {
8 | pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
9 | }
10 |
11 | plugins.each { name, path ->
12 | def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
13 | include ":$name"
14 | project(":$name").projectDir = pluginDirectory
15 | }
16 |
--------------------------------------------------------------------------------
/assets/images/ic_camera_preview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/assets/images/ic_camera_preview.png
--------------------------------------------------------------------------------
/assets/images/ic_flutter_devs_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/assets/images/ic_flutter_devs_logo.png
--------------------------------------------------------------------------------
/assets/images/ic_no_video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/assets/images/ic_no_video.png
--------------------------------------------------------------------------------
/assets/images/ic_play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/assets/images/ic_play.png
--------------------------------------------------------------------------------
/assets/images/ic_powered_by.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/assets/images/ic_powered_by.png
--------------------------------------------------------------------------------
/assets/images/ic_stop_video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/assets/images/ic_stop_video.png
--------------------------------------------------------------------------------
/assets/images/ic_switch_camera_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/assets/images/ic_switch_camera_3.png
--------------------------------------------------------------------------------
/assets/images/ic_video_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/assets/images/ic_video_icon.png
--------------------------------------------------------------------------------
/assets/images/ic_video_shutter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/assets/images/ic_video_shutter.png
--------------------------------------------------------------------------------
/flutter_video_recorder_app.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/flutter_video_recorder_app_android.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/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/app.flx
37 | /Flutter/app.zip
38 | /Flutter/flutter_assets/
39 | /Flutter/App.framework
40 | /Flutter/Flutter.framework
41 | /Flutter/Generated.xcconfig
42 | /ServiceDefinitions.json
43 |
44 | Pods/
45 | .symlinks/
46 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 8.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | def parse_KV_file(file, separator='=')
8 | file_abs_path = File.expand_path(file)
9 | if !File.exists? file_abs_path
10 | return [];
11 | end
12 | pods_ary = []
13 | skip_line_start_symbols = ["#", "/"]
14 | File.foreach(file_abs_path) { |line|
15 | next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
16 | plugin = line.split(pattern=separator)
17 | if plugin.length == 2
18 | podname = plugin[0].strip()
19 | path = plugin[1].strip()
20 | podpath = File.expand_path("#{path}", file_abs_path)
21 | pods_ary.push({:name => podname, :path => podpath});
22 | else
23 | puts "Invalid plugin specification: #{line}"
24 | end
25 | }
26 | return pods_ary
27 | end
28 |
29 | target 'Runner' do
30 | # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
31 | # referring to absolute paths on developers' machines.
32 | system('rm -rf .symlinks')
33 | system('mkdir -p .symlinks/plugins')
34 |
35 | # Flutter Pods
36 | generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
37 | if generated_xcode_build_settings.empty?
38 | puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first."
39 | end
40 | generated_xcode_build_settings.map { |p|
41 | if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
42 | symlink = File.join('.symlinks', 'flutter')
43 | File.symlink(File.dirname(p[:path]), symlink)
44 | pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
45 | end
46 | }
47 |
48 | # Plugin Pods
49 | plugin_pods = parse_KV_file('../.flutter-plugins')
50 | plugin_pods.map { |p|
51 | symlink = File.join('.symlinks', 'plugins', p[:name])
52 | File.symlink(p[:path], symlink)
53 | pod p[:name], :path => File.join(symlink, 'ios')
54 | }
55 | end
56 |
57 | post_install do |installer|
58 | installer.pods_project.targets.each do |target|
59 | target.build_configurations.each do |config|
60 | config.build_settings['ENABLE_BITCODE'] = 'NO'
61 | end
62 | end
63 | end
64 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - camera (0.0.1):
3 | - Flutter
4 | - Flutter (1.0.0)
5 | - image_picker (0.0.1):
6 | - Flutter
7 | - path_provider (0.0.1):
8 | - Flutter
9 | - video_player (0.0.1):
10 | - Flutter
11 |
12 | DEPENDENCIES:
13 | - camera (from `.symlinks/plugins/camera/ios`)
14 | - Flutter (from `.symlinks/flutter/ios`)
15 | - image_picker (from `.symlinks/plugins/image_picker/ios`)
16 | - path_provider (from `.symlinks/plugins/path_provider/ios`)
17 | - video_player (from `.symlinks/plugins/video_player/ios`)
18 |
19 | EXTERNAL SOURCES:
20 | camera:
21 | :path: ".symlinks/plugins/camera/ios"
22 | Flutter:
23 | :path: ".symlinks/flutter/ios"
24 | image_picker:
25 | :path: ".symlinks/plugins/image_picker/ios"
26 | path_provider:
27 | :path: ".symlinks/plugins/path_provider/ios"
28 | video_player:
29 | :path: ".symlinks/plugins/video_player/ios"
30 |
31 | SPEC CHECKSUMS:
32 | camera: d56ad165545ae5a0ffb892376033760a969c68c8
33 | Flutter: 58dd7d1b27887414a370fcccb9e645c08ffd7a6a
34 | image_picker: a211f28b95a560433c00f5cd3773f4710a20404d
35 | path_provider: f96fff6166a8867510d2c25fdcc346327cc4b259
36 | video_player: 3964090a33353060ed7f58aa6427c7b4b208ec21
37 |
38 | PODFILE CHECKSUM: 1e5af4103afd21ca5ead147d7b81d06f494f51a2
39 |
40 | COCOAPODS: 1.6.0.beta.2
41 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
11 | 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */ = {isa = PBXBuildFile; fileRef = 2D5378251FAA1A9400D5DBA9 /* flutter_assets */; };
12 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
13 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; };
14 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3B80C3931E831B6300D905FE /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
15 | 808D66CDCF8FED8DB1224480 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CFCC9694736E3FB3C30F5A0 /* libPods-Runner.a */; };
16 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9740EEBA1CF902C7004384FC /* Flutter.framework */; };
17 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 9740EEB21CF90195004384FC /* Debug.xcconfig */; };
18 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */; };
19 | 97C146F31CF9000F007C117D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C146F21CF9000F007C117D /* main.m */; };
20 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
21 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
22 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
23 | /* End PBXBuildFile section */
24 |
25 | /* Begin PBXCopyFilesBuildPhase section */
26 | 9705A1C41CF9048500538489 /* Embed Frameworks */ = {
27 | isa = PBXCopyFilesBuildPhase;
28 | buildActionMask = 2147483647;
29 | dstPath = "";
30 | dstSubfolderSpec = 10;
31 | files = (
32 | 3B80C3951E831B6300D905FE /* App.framework in Embed Frameworks */,
33 | );
34 | name = "Embed Frameworks";
35 | runOnlyForDeploymentPostprocessing = 0;
36 | };
37 | /* End PBXCopyFilesBuildPhase section */
38 |
39 | /* Begin PBXFileReference section */
40 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
41 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
42 | 2D5378251FAA1A9400D5DBA9 /* flutter_assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = flutter_assets; path = Flutter/flutter_assets; sourceTree = SOURCE_ROOT; };
43 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
44 | 3B80C3931E831B6300D905FE /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/App.framework; sourceTree = ""; };
45 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
46 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; };
47 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; };
48 | 7CFCC9694736E3FB3C30F5A0 /* libPods-Runner.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Runner.a"; sourceTree = BUILT_PRODUCTS_DIR; };
49 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
50 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
51 | 9740EEBA1CF902C7004384FC /* Flutter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Flutter.framework; path = Flutter/Flutter.framework; sourceTree = ""; };
52 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
53 | 97C146F21CF9000F007C117D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
54 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
55 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
56 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
57 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
58 | C1EE6359EBB7060588A8A2BF /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
59 | FF775112B8FAE135B08BFE92 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
60 | /* End PBXFileReference section */
61 |
62 | /* Begin PBXFrameworksBuildPhase section */
63 | 97C146EB1CF9000F007C117D /* Frameworks */ = {
64 | isa = PBXFrameworksBuildPhase;
65 | buildActionMask = 2147483647;
66 | files = (
67 | 9705A1C61CF904A100538489 /* Flutter.framework in Frameworks */,
68 | 3B80C3941E831B6300D905FE /* App.framework in Frameworks */,
69 | 808D66CDCF8FED8DB1224480 /* libPods-Runner.a in Frameworks */,
70 | );
71 | runOnlyForDeploymentPostprocessing = 0;
72 | };
73 | /* End PBXFrameworksBuildPhase section */
74 |
75 | /* Begin PBXGroup section */
76 | 3E9117C98783ABE1EAF0A827 /* Pods */ = {
77 | isa = PBXGroup;
78 | children = (
79 | C1EE6359EBB7060588A8A2BF /* Pods-Runner.debug.xcconfig */,
80 | FF775112B8FAE135B08BFE92 /* Pods-Runner.release.xcconfig */,
81 | );
82 | name = Pods;
83 | sourceTree = "";
84 | };
85 | 66C2AFAD5F3AFB65187B9CF4 /* Frameworks */ = {
86 | isa = PBXGroup;
87 | children = (
88 | 7CFCC9694736E3FB3C30F5A0 /* libPods-Runner.a */,
89 | );
90 | name = Frameworks;
91 | sourceTree = "";
92 | };
93 | 9740EEB11CF90186004384FC /* Flutter */ = {
94 | isa = PBXGroup;
95 | children = (
96 | 2D5378251FAA1A9400D5DBA9 /* flutter_assets */,
97 | 3B80C3931E831B6300D905FE /* App.framework */,
98 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
99 | 9740EEBA1CF902C7004384FC /* Flutter.framework */,
100 | 9740EEB21CF90195004384FC /* Debug.xcconfig */,
101 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
102 | 9740EEB31CF90195004384FC /* Generated.xcconfig */,
103 | );
104 | name = Flutter;
105 | sourceTree = "";
106 | };
107 | 97C146E51CF9000F007C117D = {
108 | isa = PBXGroup;
109 | children = (
110 | 9740EEB11CF90186004384FC /* Flutter */,
111 | 97C146F01CF9000F007C117D /* Runner */,
112 | 97C146EF1CF9000F007C117D /* Products */,
113 | 3E9117C98783ABE1EAF0A827 /* Pods */,
114 | 66C2AFAD5F3AFB65187B9CF4 /* Frameworks */,
115 | );
116 | sourceTree = "";
117 | };
118 | 97C146EF1CF9000F007C117D /* Products */ = {
119 | isa = PBXGroup;
120 | children = (
121 | 97C146EE1CF9000F007C117D /* Runner.app */,
122 | );
123 | name = Products;
124 | sourceTree = "";
125 | };
126 | 97C146F01CF9000F007C117D /* Runner */ = {
127 | isa = PBXGroup;
128 | children = (
129 | 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
130 | 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
131 | 97C146FA1CF9000F007C117D /* Main.storyboard */,
132 | 97C146FD1CF9000F007C117D /* Assets.xcassets */,
133 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
134 | 97C147021CF9000F007C117D /* Info.plist */,
135 | 97C146F11CF9000F007C117D /* Supporting Files */,
136 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
137 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */,
138 | );
139 | path = Runner;
140 | sourceTree = "";
141 | };
142 | 97C146F11CF9000F007C117D /* Supporting Files */ = {
143 | isa = PBXGroup;
144 | children = (
145 | 97C146F21CF9000F007C117D /* main.m */,
146 | );
147 | name = "Supporting Files";
148 | sourceTree = "";
149 | };
150 | /* End PBXGroup section */
151 |
152 | /* Begin PBXNativeTarget section */
153 | 97C146ED1CF9000F007C117D /* Runner */ = {
154 | isa = PBXNativeTarget;
155 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
156 | buildPhases = (
157 | C3F29F8F209064BB6B29707C /* [CP] Check Pods Manifest.lock */,
158 | 9740EEB61CF901F6004384FC /* Run Script */,
159 | 97C146EA1CF9000F007C117D /* Sources */,
160 | 97C146EB1CF9000F007C117D /* Frameworks */,
161 | 97C146EC1CF9000F007C117D /* Resources */,
162 | 9705A1C41CF9048500538489 /* Embed Frameworks */,
163 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */,
164 | 6A4E62431CB3DDC63F10CBED /* [CP] Embed Pods Frameworks */,
165 | );
166 | buildRules = (
167 | );
168 | dependencies = (
169 | );
170 | name = Runner;
171 | productName = Runner;
172 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
173 | productType = "com.apple.product-type.application";
174 | };
175 | /* End PBXNativeTarget section */
176 |
177 | /* Begin PBXProject section */
178 | 97C146E61CF9000F007C117D /* Project object */ = {
179 | isa = PBXProject;
180 | attributes = {
181 | LastUpgradeCheck = 0910;
182 | ORGANIZATIONNAME = "The Chromium Authors";
183 | TargetAttributes = {
184 | 97C146ED1CF9000F007C117D = {
185 | CreatedOnToolsVersion = 7.3.1;
186 | DevelopmentTeam = SYLT36L949;
187 | ProvisioningStyle = Manual;
188 | };
189 | };
190 | };
191 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
192 | compatibilityVersion = "Xcode 3.2";
193 | developmentRegion = English;
194 | hasScannedForEncodings = 0;
195 | knownRegions = (
196 | en,
197 | Base,
198 | );
199 | mainGroup = 97C146E51CF9000F007C117D;
200 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
201 | projectDirPath = "";
202 | projectRoot = "";
203 | targets = (
204 | 97C146ED1CF9000F007C117D /* Runner */,
205 | );
206 | };
207 | /* End PBXProject section */
208 |
209 | /* Begin PBXResourcesBuildPhase section */
210 | 97C146EC1CF9000F007C117D /* Resources */ = {
211 | isa = PBXResourcesBuildPhase;
212 | buildActionMask = 2147483647;
213 | files = (
214 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */,
215 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
216 | 9740EEB41CF90195004384FC /* Debug.xcconfig in Resources */,
217 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
218 | 2D5378261FAA1A9400D5DBA9 /* flutter_assets in Resources */,
219 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
220 | );
221 | runOnlyForDeploymentPostprocessing = 0;
222 | };
223 | /* End PBXResourcesBuildPhase section */
224 |
225 | /* Begin PBXShellScriptBuildPhase section */
226 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
227 | isa = PBXShellScriptBuildPhase;
228 | buildActionMask = 2147483647;
229 | files = (
230 | );
231 | inputPaths = (
232 | );
233 | name = "Thin Binary";
234 | outputPaths = (
235 | );
236 | runOnlyForDeploymentPostprocessing = 0;
237 | shellPath = /bin/sh;
238 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" thin";
239 | };
240 | 6A4E62431CB3DDC63F10CBED /* [CP] Embed Pods Frameworks */ = {
241 | isa = PBXShellScriptBuildPhase;
242 | buildActionMask = 2147483647;
243 | files = (
244 | );
245 | inputPaths = (
246 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
247 | "${PODS_ROOT}/../.symlinks/flutter/ios/Flutter.framework",
248 | );
249 | name = "[CP] Embed Pods Frameworks";
250 | outputPaths = (
251 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
252 | );
253 | runOnlyForDeploymentPostprocessing = 0;
254 | shellPath = /bin/sh;
255 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
256 | showEnvVarsInLog = 0;
257 | };
258 | 9740EEB61CF901F6004384FC /* Run Script */ = {
259 | isa = PBXShellScriptBuildPhase;
260 | buildActionMask = 2147483647;
261 | files = (
262 | );
263 | inputPaths = (
264 | );
265 | name = "Run Script";
266 | outputPaths = (
267 | );
268 | runOnlyForDeploymentPostprocessing = 0;
269 | shellPath = /bin/sh;
270 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build\n";
271 | };
272 | C3F29F8F209064BB6B29707C /* [CP] Check Pods Manifest.lock */ = {
273 | isa = PBXShellScriptBuildPhase;
274 | buildActionMask = 2147483647;
275 | files = (
276 | );
277 | inputPaths = (
278 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
279 | "${PODS_ROOT}/Manifest.lock",
280 | );
281 | name = "[CP] Check Pods Manifest.lock";
282 | outputPaths = (
283 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
284 | );
285 | runOnlyForDeploymentPostprocessing = 0;
286 | shellPath = /bin/sh;
287 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
288 | showEnvVarsInLog = 0;
289 | };
290 | /* End PBXShellScriptBuildPhase section */
291 |
292 | /* Begin PBXSourcesBuildPhase section */
293 | 97C146EA1CF9000F007C117D /* Sources */ = {
294 | isa = PBXSourcesBuildPhase;
295 | buildActionMask = 2147483647;
296 | files = (
297 | 978B8F6F1D3862AE00F588F7 /* AppDelegate.m in Sources */,
298 | 97C146F31CF9000F007C117D /* main.m in Sources */,
299 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
300 | );
301 | runOnlyForDeploymentPostprocessing = 0;
302 | };
303 | /* End PBXSourcesBuildPhase section */
304 |
305 | /* Begin PBXVariantGroup section */
306 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = {
307 | isa = PBXVariantGroup;
308 | children = (
309 | 97C146FB1CF9000F007C117D /* Base */,
310 | );
311 | name = Main.storyboard;
312 | sourceTree = "";
313 | };
314 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = {
315 | isa = PBXVariantGroup;
316 | children = (
317 | 97C147001CF9000F007C117D /* Base */,
318 | );
319 | name = LaunchScreen.storyboard;
320 | sourceTree = "";
321 | };
322 | /* End PBXVariantGroup section */
323 |
324 | /* Begin XCBuildConfiguration section */
325 | 97C147031CF9000F007C117D /* Debug */ = {
326 | isa = XCBuildConfiguration;
327 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
328 | buildSettings = {
329 | ALWAYS_SEARCH_USER_PATHS = NO;
330 | CLANG_ANALYZER_NONNULL = YES;
331 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
332 | CLANG_CXX_LIBRARY = "libc++";
333 | CLANG_ENABLE_MODULES = YES;
334 | CLANG_ENABLE_OBJC_ARC = YES;
335 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
336 | CLANG_WARN_BOOL_CONVERSION = YES;
337 | CLANG_WARN_COMMA = YES;
338 | CLANG_WARN_CONSTANT_CONVERSION = YES;
339 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
340 | CLANG_WARN_EMPTY_BODY = YES;
341 | CLANG_WARN_ENUM_CONVERSION = YES;
342 | CLANG_WARN_INFINITE_RECURSION = YES;
343 | CLANG_WARN_INT_CONVERSION = YES;
344 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
345 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
346 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
347 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
348 | CLANG_WARN_STRICT_PROTOTYPES = YES;
349 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
350 | CLANG_WARN_UNREACHABLE_CODE = YES;
351 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
352 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
353 | COPY_PHASE_STRIP = NO;
354 | DEBUG_INFORMATION_FORMAT = dwarf;
355 | ENABLE_STRICT_OBJC_MSGSEND = YES;
356 | ENABLE_TESTABILITY = YES;
357 | GCC_C_LANGUAGE_STANDARD = gnu99;
358 | GCC_DYNAMIC_NO_PIC = NO;
359 | GCC_NO_COMMON_BLOCKS = YES;
360 | GCC_OPTIMIZATION_LEVEL = 0;
361 | GCC_PREPROCESSOR_DEFINITIONS = (
362 | "DEBUG=1",
363 | "$(inherited)",
364 | );
365 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
366 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
367 | GCC_WARN_UNDECLARED_SELECTOR = YES;
368 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
369 | GCC_WARN_UNUSED_FUNCTION = YES;
370 | GCC_WARN_UNUSED_VARIABLE = YES;
371 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
372 | MTL_ENABLE_DEBUG_INFO = YES;
373 | ONLY_ACTIVE_ARCH = YES;
374 | SDKROOT = iphoneos;
375 | TARGETED_DEVICE_FAMILY = "1,2";
376 | };
377 | name = Debug;
378 | };
379 | 97C147041CF9000F007C117D /* Release */ = {
380 | isa = XCBuildConfiguration;
381 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
382 | buildSettings = {
383 | ALWAYS_SEARCH_USER_PATHS = NO;
384 | CLANG_ANALYZER_NONNULL = YES;
385 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
386 | CLANG_CXX_LIBRARY = "libc++";
387 | CLANG_ENABLE_MODULES = YES;
388 | CLANG_ENABLE_OBJC_ARC = YES;
389 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
390 | CLANG_WARN_BOOL_CONVERSION = YES;
391 | CLANG_WARN_COMMA = YES;
392 | CLANG_WARN_CONSTANT_CONVERSION = YES;
393 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
394 | CLANG_WARN_EMPTY_BODY = YES;
395 | CLANG_WARN_ENUM_CONVERSION = YES;
396 | CLANG_WARN_INFINITE_RECURSION = YES;
397 | CLANG_WARN_INT_CONVERSION = YES;
398 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
399 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
400 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
401 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
402 | CLANG_WARN_STRICT_PROTOTYPES = YES;
403 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
404 | CLANG_WARN_UNREACHABLE_CODE = YES;
405 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
406 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
407 | COPY_PHASE_STRIP = NO;
408 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
409 | ENABLE_NS_ASSERTIONS = NO;
410 | ENABLE_STRICT_OBJC_MSGSEND = YES;
411 | GCC_C_LANGUAGE_STANDARD = gnu99;
412 | GCC_NO_COMMON_BLOCKS = YES;
413 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
414 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
415 | GCC_WARN_UNDECLARED_SELECTOR = YES;
416 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
417 | GCC_WARN_UNUSED_FUNCTION = YES;
418 | GCC_WARN_UNUSED_VARIABLE = YES;
419 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
420 | MTL_ENABLE_DEBUG_INFO = NO;
421 | SDKROOT = iphoneos;
422 | TARGETED_DEVICE_FAMILY = "1,2";
423 | VALIDATE_PRODUCT = YES;
424 | };
425 | name = Release;
426 | };
427 | 97C147061CF9000F007C117D /* Debug */ = {
428 | isa = XCBuildConfiguration;
429 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
430 | buildSettings = {
431 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
432 | CODE_SIGN_IDENTITY = "iPhone Developer";
433 | CODE_SIGN_STYLE = Manual;
434 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
435 | DEVELOPMENT_TEAM = SYLT36L949;
436 | ENABLE_BITCODE = NO;
437 | FRAMEWORK_SEARCH_PATHS = (
438 | "$(inherited)",
439 | "$(PROJECT_DIR)/Flutter",
440 | );
441 | INFOPLIST_FILE = Runner/Info.plist;
442 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
443 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
444 | LIBRARY_SEARCH_PATHS = (
445 | "$(inherited)",
446 | "$(PROJECT_DIR)/Flutter",
447 | );
448 | PRODUCT_BUNDLE_IDENTIFIER = com.successive.adhoc.flutterVideoRecorderApp;
449 | PRODUCT_NAME = "$(TARGET_NAME)";
450 | PROVISIONING_PROFILE = "21f7e39d-580a-4b07-b443-c453b2d4f45b";
451 | PROVISIONING_PROFILE_SPECIFIER = AdHocDevelopment;
452 | VERSIONING_SYSTEM = "apple-generic";
453 | };
454 | name = Debug;
455 | };
456 | 97C147071CF9000F007C117D /* Release */ = {
457 | isa = XCBuildConfiguration;
458 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
459 | buildSettings = {
460 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
461 | CODE_SIGN_IDENTITY = "iPhone Developer";
462 | CODE_SIGN_STYLE = Manual;
463 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
464 | DEVELOPMENT_TEAM = SYLT36L949;
465 | ENABLE_BITCODE = NO;
466 | FRAMEWORK_SEARCH_PATHS = (
467 | "$(inherited)",
468 | "$(PROJECT_DIR)/Flutter",
469 | );
470 | INFOPLIST_FILE = Runner/Info.plist;
471 | IPHONEOS_DEPLOYMENT_TARGET = 8.0;
472 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
473 | LIBRARY_SEARCH_PATHS = (
474 | "$(inherited)",
475 | "$(PROJECT_DIR)/Flutter",
476 | );
477 | PRODUCT_BUNDLE_IDENTIFIER = com.successive.adhoc.flutterVideoRecorderApp;
478 | PRODUCT_NAME = "$(TARGET_NAME)";
479 | PROVISIONING_PROFILE = "21f7e39d-580a-4b07-b443-c453b2d4f45b";
480 | PROVISIONING_PROFILE_SPECIFIER = AdHocDevelopment;
481 | VERSIONING_SYSTEM = "apple-generic";
482 | };
483 | name = Release;
484 | };
485 | /* End XCBuildConfiguration section */
486 |
487 | /* Begin XCConfigurationList section */
488 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = {
489 | isa = XCConfigurationList;
490 | buildConfigurations = (
491 | 97C147031CF9000F007C117D /* Debug */,
492 | 97C147041CF9000F007C117D /* Release */,
493 | );
494 | defaultConfigurationIsVisible = 0;
495 | defaultConfigurationName = Release;
496 | };
497 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = {
498 | isa = XCConfigurationList;
499 | buildConfigurations = (
500 | 97C147061CF9000F007C117D /* Debug */,
501 | 97C147071CF9000F007C117D /* Release */,
502 | );
503 | defaultConfigurationIsVisible = 0;
504 | defaultConfigurationName = Release;
505 | };
506 | /* End XCConfigurationList section */
507 | };
508 | rootObject = 97C146E61CF9000F007C117D /* Project object */;
509 | }
510 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildSystemType
6 | Original
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface AppDelegate : FlutterAppDelegate
5 |
6 | @end
7 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.m:
--------------------------------------------------------------------------------
1 | #include "AppDelegate.h"
2 | #include "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 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "20x20",
5 | "idiom" : "iphone",
6 | "filename" : "Icon-App-20x20@2x.png",
7 | "scale" : "2x"
8 | },
9 | {
10 | "size" : "20x20",
11 | "idiom" : "iphone",
12 | "filename" : "Icon-App-20x20@3x.png",
13 | "scale" : "3x"
14 | },
15 | {
16 | "size" : "29x29",
17 | "idiom" : "iphone",
18 | "filename" : "Icon-App-29x29@1x.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "29x29",
23 | "idiom" : "iphone",
24 | "filename" : "Icon-App-29x29@2x.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "29x29",
29 | "idiom" : "iphone",
30 | "filename" : "Icon-App-29x29@3x.png",
31 | "scale" : "3x"
32 | },
33 | {
34 | "size" : "40x40",
35 | "idiom" : "iphone",
36 | "filename" : "Icon-App-40x40@2x.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "40x40",
41 | "idiom" : "iphone",
42 | "filename" : "Icon-App-40x40@3x.png",
43 | "scale" : "3x"
44 | },
45 | {
46 | "size" : "60x60",
47 | "idiom" : "iphone",
48 | "filename" : "Icon-App-60x60@2x.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "60x60",
53 | "idiom" : "iphone",
54 | "filename" : "Icon-App-60x60@3x.png",
55 | "scale" : "3x"
56 | },
57 | {
58 | "size" : "20x20",
59 | "idiom" : "ipad",
60 | "filename" : "Icon-App-20x20@1x.png",
61 | "scale" : "1x"
62 | },
63 | {
64 | "size" : "20x20",
65 | "idiom" : "ipad",
66 | "filename" : "Icon-App-20x20@2x.png",
67 | "scale" : "2x"
68 | },
69 | {
70 | "size" : "29x29",
71 | "idiom" : "ipad",
72 | "filename" : "Icon-App-29x29@1x.png",
73 | "scale" : "1x"
74 | },
75 | {
76 | "size" : "29x29",
77 | "idiom" : "ipad",
78 | "filename" : "Icon-App-29x29@2x.png",
79 | "scale" : "2x"
80 | },
81 | {
82 | "size" : "40x40",
83 | "idiom" : "ipad",
84 | "filename" : "Icon-App-40x40@1x.png",
85 | "scale" : "1x"
86 | },
87 | {
88 | "size" : "40x40",
89 | "idiom" : "ipad",
90 | "filename" : "Icon-App-40x40@2x.png",
91 | "scale" : "2x"
92 | },
93 | {
94 | "size" : "76x76",
95 | "idiom" : "ipad",
96 | "filename" : "Icon-App-76x76@1x.png",
97 | "scale" : "1x"
98 | },
99 | {
100 | "size" : "76x76",
101 | "idiom" : "ipad",
102 | "filename" : "Icon-App-76x76@2x.png",
103 | "scale" : "2x"
104 | },
105 | {
106 | "size" : "83.5x83.5",
107 | "idiom" : "ipad",
108 | "filename" : "Icon-App-83.5x83.5@2x.png",
109 | "scale" : "2x"
110 | },
111 | {
112 | "size" : "1024x1024",
113 | "idiom" : "ios-marketing",
114 | "filename" : "Icon-App-1024x1024@1x.png",
115 | "scale" : "1x"
116 | }
117 | ],
118 | "info" : {
119 | "version" : 1,
120 | "author" : "xcode"
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/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.
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | flutter_video_player_app
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | flutter_video_recorder_app
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(FLUTTER_BUILD_NUMBER)
25 | LSRequiresIPhoneOS
26 |
27 | NSCameraUsageDescription
28 | Can I use the camera please?
29 | NSMicrophoneUsageDescription
30 | Can I use the mic please?
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | UIMainStoryboardFile
34 | Main
35 | UIRequiresFullScreen
36 |
37 | UISupportedInterfaceOrientations
38 |
39 | UIInterfaceOrientationPortrait
40 | UIInterfaceOrientationLandscapeLeft
41 | UIInterfaceOrientationLandscapeRight
42 |
43 | UISupportedInterfaceOrientations~ipad
44 |
45 | UIInterfaceOrientationPortrait
46 | UIInterfaceOrientationPortraitUpsideDown
47 | UIInterfaceOrientationLandscapeLeft
48 | UIInterfaceOrientationLandscapeRight
49 |
50 | UIViewControllerBasedStatusBarAppearance
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/lib/constant/Constant.dart:
--------------------------------------------------------------------------------
1 | final String HOME_SCREEN="/HOME_SCREEN";
2 | final String CAMERA_SCREEN="/CAMERA_SCREEN";
3 | final String VIDEO_RECORDER_SCREEN="/VIDEO_RECORDER_SCREEN";
--------------------------------------------------------------------------------
/lib/generated/i18n.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:flutter/foundation.dart';
4 | import 'package:flutter/material.dart';
5 |
6 | // ignore_for_file: non_constant_identifier_names
7 | // ignore_for_file: camel_case_types
8 | // ignore_for_file: prefer_single_quotes
9 |
10 | //This file is automatically generated. DO NOT EDIT, all your changes would be lost.
11 | class S implements WidgetsLocalizations {
12 | const S();
13 |
14 | static const GeneratedLocalizationsDelegate delegate =
15 | GeneratedLocalizationsDelegate();
16 |
17 | static S of(BuildContext context) => Localizations.of(context, S);
18 |
19 | @override
20 | TextDirection get textDirection => TextDirection.ltr;
21 | }
22 |
23 | class en extends S {
24 | const en();
25 | }
26 |
27 | class GeneratedLocalizationsDelegate extends LocalizationsDelegate {
28 | const GeneratedLocalizationsDelegate();
29 |
30 | List get supportedLocales {
31 | return const [
32 | Locale("en", ""),
33 | ];
34 | }
35 |
36 | LocaleListResolutionCallback listResolution({Locale fallback}) {
37 | return (List locales, Iterable supported) {
38 | if (locales == null || locales.isEmpty) {
39 | return fallback ?? supported.first;
40 | } else {
41 | return _resolve(locales.first, fallback, supported);
42 | }
43 | };
44 | }
45 |
46 | LocaleResolutionCallback resolution({Locale fallback}) {
47 | return (Locale locale, Iterable supported) {
48 | return _resolve(locale, fallback, supported);
49 | };
50 | }
51 |
52 | Locale _resolve(Locale locale, Locale fallback, Iterable supported) {
53 | if (locale == null || !isSupported(locale)) {
54 | return fallback ?? supported.first;
55 | }
56 |
57 | final Locale languageLocale = Locale(locale.languageCode, "");
58 | if (supported.contains(locale)) {
59 | return locale;
60 | } else if (supported.contains(languageLocale)) {
61 | return languageLocale;
62 | } else {
63 | final Locale fallbackLocale = fallback ?? supported.first;
64 | return fallbackLocale;
65 | }
66 | }
67 |
68 | @override
69 | Future load(Locale locale) {
70 | final String lang = getLang(locale);
71 | if (lang != null) {
72 | switch (lang) {
73 | case "en":
74 | return SynchronousFuture(const en());
75 | default:
76 | // NO-OP.
77 | }
78 | }
79 | return SynchronousFuture(const S());
80 | }
81 |
82 | @override
83 | bool isSupported(Locale locale) =>
84 | locale != null && supportedLocales.contains(locale);
85 |
86 | @override
87 | bool shouldReload(GeneratedLocalizationsDelegate old) => false;
88 | }
89 |
90 | String getLang(Locale l) => l == null
91 | ? null
92 | : l.countryCode != null && l.countryCode.isEmpty
93 | ? l.languageCode
94 | : l.toString();
95 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:camera/camera.dart';
2 | import 'dart:async';
3 |
4 | import 'package:flutter/material.dart';
5 | import 'package:flutter_video_recorder_app/constant/Constant.dart';
6 | import 'package:flutter_video_recorder_app/screen/CameraHomeScreen.dart';
7 | import 'package:flutter_video_recorder_app/screen/HomeScreen.dart';
8 | import 'package:flutter_video_recorder_app/screen/SplashScreen.dart';
9 |
10 | List cameras;
11 |
12 | Future main() async {
13 | try {
14 | cameras = await availableCameras();
15 | } on CameraException catch (e) {
16 | //logError(e.code, e.description);
17 | }
18 |
19 | runApp(
20 | MaterialApp(
21 | title: "Video Recorder App",
22 | debugShowCheckedModeBanner: false,
23 | theme: ThemeData(
24 | primarySwatch: Colors.blue,
25 | ),
26 | home: SplashScreen(),
27 | routes: {
28 | HOME_SCREEN: (BuildContext context) => HomeScreen(),
29 | CAMERA_SCREEN: (BuildContext context) => CameraHomeScreen(cameras),
30 | },
31 | ),
32 | );
33 | }
34 |
--------------------------------------------------------------------------------
/lib/screen/CameraHomeScreen.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'dart:io';
3 |
4 | import 'package:camera/camera.dart';
5 | import 'package:path_provider/path_provider.dart';
6 | import 'package:flutter/material.dart';
7 | import 'package:video_player/video_player.dart';
8 |
9 | class CameraHomeScreen extends StatefulWidget {
10 | List cameras;
11 |
12 | CameraHomeScreen(this.cameras);
13 |
14 | @override
15 | State createState() {
16 | return _CameraHomeScreenState();
17 | }
18 | }
19 |
20 | class _CameraHomeScreenState extends State {
21 | String imagePath;
22 | bool _toggleCamera = false;
23 | bool _startRecording = false;
24 | final GlobalKey _scaffoldKey = new GlobalKey();
25 | CameraController controller;
26 |
27 | final String _assetVideoRecorder = 'assets/images/ic_video_shutter.png';
28 | final String _assetStopVideoRecorder = 'assets/images/ic_stop_video.png';
29 |
30 | String videoPath;
31 | VideoPlayerController videoController;
32 | VoidCallback videoPlayerListener;
33 |
34 |
35 | @override
36 | void initState() {
37 | try {
38 | onCameraSelected(widget.cameras[0]);
39 | } catch (e) {
40 | print(e.toString());
41 | }
42 | super.initState();
43 | }
44 |
45 | @override
46 | void dispose() {
47 | controller?.dispose();
48 | super.dispose();
49 | }
50 |
51 | @override
52 | Widget build(BuildContext context) {
53 | if (widget.cameras.isEmpty) {
54 | return Container(
55 | alignment: Alignment.center,
56 | padding: EdgeInsets.all(16.0),
57 | child: Text(
58 | 'No Camera Found!',
59 | style: TextStyle(
60 | fontSize: 16.0,
61 | color: Colors.white,
62 | ),
63 | ),
64 | );
65 | }
66 |
67 | if (!controller.value.isInitialized) {
68 | return Container();
69 | }
70 |
71 | return AspectRatio(
72 | key: _scaffoldKey,
73 | aspectRatio: controller.value.aspectRatio,
74 | child: Container(
75 | child: Stack(
76 | children: [
77 | CameraPreview(controller),
78 | Align(
79 | alignment: Alignment.bottomCenter,
80 | child: Container(
81 | width: double.infinity,
82 | height: 120.0,
83 | padding: EdgeInsets.all(20.0),
84 | color: Color.fromRGBO(00, 00, 00, 0.7),
85 | child: Stack(
86 | //mainAxisAlignment: MainAxisAlignment.center,
87 | children: [
88 | Align(
89 | alignment: Alignment.center,
90 | child: Material(
91 | color: Colors.transparent,
92 | child: InkWell(
93 | borderRadius: BorderRadius.all(Radius.circular(50.0)),
94 | onTap: () {
95 | !_startRecording
96 | ? onVideoRecordButtonPressed()
97 | : onStopButtonPressed();
98 | setState(() {
99 | _startRecording = !_startRecording;
100 | });
101 | },
102 | child: Container(
103 | padding: EdgeInsets.all(4.0),
104 | child: Image.asset(
105 | !_startRecording
106 | ? _assetVideoRecorder
107 | : _assetStopVideoRecorder,
108 | width: 72.0,
109 | height: 72.0,
110 | ),
111 | ),
112 | ),
113 | ),
114 | ),
115 | !_startRecording ? _getToggleCamera() : new Container(),
116 | ],
117 | ),
118 | ),
119 | ),
120 | ],
121 | ),
122 | ),
123 | );
124 |
125 | }
126 |
127 | Widget _getToggleCamera() {
128 | return Align(
129 | alignment: Alignment.centerRight,
130 | child: Material(
131 | color: Colors.transparent,
132 | child: InkWell(
133 | borderRadius: BorderRadius.all(Radius.circular(50.0)),
134 | onTap: () {
135 | !_toggleCamera
136 | ? onCameraSelected(widget.cameras[1])
137 | : onCameraSelected(widget.cameras[0]);
138 | setState(() {
139 | _toggleCamera = !_toggleCamera;
140 | });
141 | },
142 | child: Container(
143 | padding: EdgeInsets.all(4.0),
144 | child: Image.asset(
145 | 'assets/images/ic_switch_camera_3.png',
146 | color: Colors.grey[200],
147 | width: 42.0,
148 | height: 42.0,
149 | ),
150 | ),
151 | ),
152 | ),
153 | );
154 | }
155 |
156 | void onCameraSelected(CameraDescription cameraDescription) async {
157 | if (controller != null) await controller.dispose();
158 | controller = CameraController(cameraDescription, ResolutionPreset.medium);
159 |
160 | controller.addListener(() {
161 | if (mounted) setState(() {});
162 | if (controller.value.hasError) {
163 | showSnackBar('Camera Error: ${controller.value.errorDescription}');
164 | }
165 | });
166 |
167 | try {
168 | await controller.initialize();
169 | } on CameraException catch (e) {
170 | _showException(e);
171 | }
172 |
173 | if (mounted) setState(() {});
174 | }
175 |
176 | String timestamp() => new DateTime.now().millisecondsSinceEpoch.toString();
177 |
178 | void setCameraResult() {
179 | print("Recording Done!");
180 | Navigator.pop(context, videoPath);
181 | }
182 |
183 | void onVideoRecordButtonPressed() {
184 | print('onVideoRecordButtonPressed()');
185 | startVideoRecording().then((String filePath) {
186 | if (mounted) setState(() {});
187 | if (filePath != null) showSnackBar('Saving video to $filePath');
188 | });
189 | }
190 |
191 | void onStopButtonPressed() {
192 | stopVideoRecording().then((_) {
193 | if (mounted) setState(() {});
194 | showSnackBar('Video recorded to: $videoPath');
195 | });
196 | }
197 |
198 | Future startVideoRecording() async {
199 | if (!controller.value.isInitialized) {
200 | showSnackBar('Error: select a camera first.');
201 | return null;
202 | }
203 |
204 | final Directory extDir = await getApplicationDocumentsDirectory();
205 | final String dirPath = '${extDir.path}/Videos';
206 | await new Directory(dirPath).create(recursive: true);
207 | final String filePath = '$dirPath/${timestamp()}.mp4';
208 |
209 | if (controller.value.isRecordingVideo) {
210 | return null;
211 | }
212 |
213 | try {
214 | videoPath = filePath;
215 | await controller.startVideoRecording(filePath);
216 | } on CameraException catch (e) {
217 | _showException(e);
218 | return null;
219 | }
220 | return filePath;
221 | }
222 |
223 | Future stopVideoRecording() async {
224 | if (!controller.value.isRecordingVideo) {
225 | return null;
226 | }
227 |
228 | try {
229 | await controller.stopVideoRecording();
230 | } on CameraException catch (e) {
231 | _showException(e);
232 | return null;
233 | }
234 |
235 | setCameraResult();
236 | }
237 |
238 | void _showException(CameraException e) {
239 | logError(e.code, e.description);
240 | showSnackBar('Error: ${e.code}\n${e.description}');
241 | }
242 |
243 | void showSnackBar(String message) {
244 | print(message);
245 |
246 | }
247 |
248 | void logError(String code, String message) =>
249 | print('Error: $code\nMessage: $message');
250 | }
251 |
--------------------------------------------------------------------------------
/lib/screen/HomeScreen.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'dart:io';
3 |
4 | import 'package:camera/camera.dart';
5 | import 'package:flutter/material.dart';
6 | import 'package:flutter_video_recorder_app/constant/Constant.dart';
7 | import 'package:flutter_video_recorder_app/screen/VideoPlayerScreen.dart';
8 |
9 | //import 'package:image_picker/image_picker.dart';
10 | import 'package:video_player/video_player.dart';
11 | import 'package:flutter_video_recorder_app/screen/CameraHomeScreen.dart';
12 | import 'package:flutter_video_recorder_app/utility/DiagonalClipper.dart';
13 |
14 | class HomeScreen extends StatefulWidget {
15 | HomeScreen();
16 |
17 | @override
18 | State createState() {
19 | return _HomeScreenState();
20 | }
21 | }
22 |
23 | class _HomeScreenState extends State {
24 | String _videoPath = null;
25 | double _headerHeight = 320.0;
26 | final String _assetPlayImagePath = 'assets/images/ic_play.png';
27 | final String _assetImagePath = 'assets/images/ic_no_video.png';
28 |
29 | var _thumbPath;
30 |
31 | var _videoName;
32 |
33 | _HomeScreenState();
34 |
35 | @override
36 | Widget build(BuildContext context) {
37 | return Scaffold(
38 | body: Stack(
39 | children: [
40 | _videoPath != null ? _getVideoContainer() : _getImageFromAsset(),
41 | _getCameraFab(),
42 | _getLogo(),
43 | ],
44 | ));
45 | }
46 |
47 | Widget _getImageFromAsset() {
48 | return ClipPath(
49 | child: Padding(
50 | padding: EdgeInsets.only(bottom: 30.0),
51 | child: Container(
52 | width: double.infinity,
53 | height: _headerHeight,
54 | color: Colors.grey,
55 | child: Column(
56 | mainAxisAlignment: MainAxisAlignment.center,
57 | children: [
58 | Image.asset(
59 | _assetImagePath,
60 | fit: BoxFit.fill,
61 | width: 48.0,
62 | height: 32.0,
63 | ),
64 | Container(
65 | margin: EdgeInsets.only(top: 8.0),
66 | child: Text(
67 | 'No Video Available',
68 | style: TextStyle(
69 | color: Colors.grey[350],
70 | //fontWeight: FontWeight.bold,
71 | fontSize: 16.0,
72 | ),
73 | ),
74 | ),
75 | ],
76 | )),
77 | ),
78 | );
79 | }
80 |
81 | Widget _getVideoContainer() {
82 | return Container(
83 | padding: EdgeInsets.only(bottom: 30.0),
84 | child: new Container(
85 | width: double.infinity,
86 | height: _headerHeight,
87 | color: Colors.grey,
88 | child: Stack(
89 | children: [
90 | _thumbPath != null
91 | ? new Opacity(
92 | opacity: 0.5,
93 | child: new Image.file(
94 | File(
95 | _thumbPath,
96 | ),
97 | fit: BoxFit.cover,
98 | width: double.infinity,
99 | height: _headerHeight,
100 | ),
101 | )
102 | : new Container(),
103 | new Align(
104 | alignment: Alignment.center,
105 | child: Column(
106 | mainAxisAlignment: MainAxisAlignment.center,
107 | children: [
108 | GestureDetector(
109 | onTap: () {
110 | Navigator.of(context).push(new MaterialPageRoute(
111 | builder: (BuildContext context) =>
112 | new VideoPlayerScreen(_videoPath)));
113 | },
114 | child: new Image.asset(
115 | _assetPlayImagePath,
116 | width: 72.0,
117 | height: 72.0,
118 | ),
119 | ),
120 | new Container(
121 | margin: EdgeInsets.only(top: 2.0),
122 | child: Text(
123 | _videoName != null ? _videoName : "",
124 | style: TextStyle(
125 | color: Colors.white,
126 | fontSize: 16.0,
127 | ),
128 | ),
129 | ),
130 | ],
131 | ),
132 | ),
133 | _buildPathWidget()
134 | ],
135 | )),
136 | );
137 | }
138 |
139 | Widget _buildPathWidget() {
140 | return _videoPath != null
141 | ? new Align(
142 | alignment: Alignment.bottomCenter,
143 | child: Container(
144 | width: double.infinity,
145 | height: 100.0,
146 | padding: EdgeInsets.only(
147 | left: 10.0, right: 10.0, top: 5.0, bottom: 5.0),
148 | color: Color.fromRGBO(00, 00, 00, 0.7),
149 | child: Center(
150 | child: Text(
151 | _videoPath,
152 | style: TextStyle(color: Colors.white),
153 | ),
154 | ),
155 | ),
156 | )
157 | : new Container();
158 | }
159 |
160 | Widget _getCameraFab() {
161 | return Positioned(
162 | top: _headerHeight - 30.0,
163 | right: 16.0,
164 | child: FloatingActionButton(
165 | onPressed: _recordVideo,
166 | child: Icon(
167 | Icons.videocam,
168 | color: Colors.white,
169 | ),
170 | backgroundColor: Colors.red,
171 | ),
172 | );
173 | }
174 |
175 | Widget _getLogo() {
176 | return Container(
177 | margin: EdgeInsets.only(top: 200.0),
178 | alignment: Alignment.center,
179 | child: Center(
180 | child: Image.asset(
181 | 'assets/images/ic_flutter_devs_logo.png',
182 | width: 160.0,
183 | height: 160.0,
184 | fit: BoxFit.contain,
185 | ),
186 | ),
187 | );
188 | }
189 |
190 | Future _recordVideo() async {
191 | final videoPath = await Navigator.of(context).pushNamed(CAMERA_SCREEN);
192 | setState(() {
193 | _videoPath = videoPath;
194 | });
195 | }
196 | }
197 |
--------------------------------------------------------------------------------
/lib/screen/SplashScreen.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'package:flutter/cupertino.dart';
3 | import 'package:flutter/material.dart';
4 | import 'package:flutter_video_recorder_app/constant/Constant.dart';
5 |
6 | class SplashScreen extends StatefulWidget {
7 | @override
8 | SplashScreenState createState() => new SplashScreenState();
9 | }
10 |
11 | class SplashScreenState extends State
12 | with SingleTickerProviderStateMixin {
13 | var _visible = true;
14 |
15 | AnimationController animationController;
16 | Animation animation;
17 |
18 | startTime() async {
19 | var _duration = new Duration(seconds: 3);
20 | return new Timer(_duration, navigationPage);
21 | }
22 |
23 | void navigationPage() {
24 | Navigator.of(context).pushReplacementNamed(HOME_SCREEN);
25 | }
26 |
27 | @override
28 | void initState() {
29 | super.initState();
30 | animationController = new AnimationController(
31 | vsync: this,
32 | duration: new Duration(seconds: 2),
33 | );
34 | animation =
35 | new CurvedAnimation(parent: animationController, curve: Curves.easeOut);
36 |
37 | animation.addListener(() => this.setState(() {}));
38 | animationController.forward();
39 |
40 | setState(() {
41 | _visible = !_visible;
42 | });
43 | startTime();
44 | }
45 |
46 | @override
47 | Widget build(BuildContext context) {
48 | return Scaffold(
49 | body: Stack(
50 | fit: StackFit.expand,
51 | children: [
52 | new Column(
53 | mainAxisAlignment: MainAxisAlignment.end,
54 | mainAxisSize: MainAxisSize.min,
55 | children: [
56 | Padding(
57 | padding: EdgeInsets.only(bottom: 30.0),
58 | child: new Image.asset(
59 | 'assets/images/ic_powered_by.png',
60 | height: 25.0,
61 | fit: BoxFit.scaleDown,
62 | ),
63 | )
64 | ],
65 | ),
66 | new Column(
67 | mainAxisAlignment: MainAxisAlignment.center,
68 | children: [
69 | new Image.asset(
70 | 'assets/images/ic_flutter_devs_logo.png',
71 | width: animation.value * 250,
72 | height: animation.value * 250,
73 | ),
74 | ],
75 | ),
76 | ],
77 | ),
78 | );
79 | }
80 | }
81 |
--------------------------------------------------------------------------------
/lib/screen/VideoPlayerScreen.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 |
3 | import 'package:flutter/material.dart';
4 | import 'package:video_player/video_player.dart';
5 |
6 | class VideoPlayerScreen extends StatefulWidget {
7 | String path;
8 |
9 | VideoPlayerScreen(this.path);
10 |
11 | @override
12 | _VideoPlayerScreenState createState() => _VideoPlayerScreenState(path);
13 | }
14 |
15 | class _VideoPlayerScreenState extends State {
16 | VideoPlayerController playerController;
17 | VoidCallback listener;
18 | String path;
19 |
20 | BuildContext context;
21 |
22 | _VideoPlayerScreenState(this.path);
23 |
24 | @override
25 | @override
26 | void initState() {
27 | super.initState();
28 |
29 | listener = () {
30 | };
31 | initializeVideo();
32 | playerController.play();
33 | }
34 |
35 | void initializeVideo() {
36 | playerController = VideoPlayerController.file(File(path))
37 | ..addListener(listener)
38 | ..setVolume(1.0)
39 | ..initialize()
40 | ..play();
41 | }
42 |
43 | @override
44 | void deactivate() {
45 | if (playerController != null) {
46 | playerController.setVolume(0.0);
47 | playerController.removeListener(listener);
48 | }
49 | super.deactivate();
50 | }
51 |
52 | @override
53 | void dispose() {
54 | if (playerController != null) playerController.dispose();
55 | super.dispose();
56 | }
57 |
58 | @override
59 | Widget build(BuildContext context) {
60 | this.context = context;
61 | return Scaffold(
62 | appBar: new AppBar(
63 | title: Text('Video Player'),
64 | ),
65 | body: Stack(fit: StackFit.expand, children: [
66 | new AspectRatio(
67 | aspectRatio: 9 / 16,
68 | child: Container(
69 | child: (playerController != null
70 | ? VideoPlayer(
71 | playerController,
72 | )
73 | : Container()),
74 | )),
75 | ]));
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/lib/utility/DiagonalClipper.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 | import 'package:flutter/material.dart';
3 |
4 | class DialogonalClipper extends CustomClipper {
5 | @override
6 | Path getClip(Size size) {
7 | Path path = new Path();
8 | path.lineTo(0.0, size.height - 60.0);
9 | path.lineTo(size.width, size.height);
10 | path.lineTo(size.width, 0.0);
11 | path.close();
12 | return path;
13 | }
14 |
15 | @override
16 | bool shouldReclip(CustomClipper oldClipper) => true;
17 | }
18 |
--------------------------------------------------------------------------------
/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://www.dartlang.org/tools/pub/glossary#lockfile
3 | packages:
4 | async:
5 | dependency: transitive
6 | description:
7 | name: async
8 | url: "https://pub.dartlang.org"
9 | source: hosted
10 | version: "2.0.8"
11 | boolean_selector:
12 | dependency: transitive
13 | description:
14 | name: boolean_selector
15 | url: "https://pub.dartlang.org"
16 | source: hosted
17 | version: "1.0.4"
18 | camera:
19 | dependency: "direct main"
20 | description:
21 | name: camera
22 | url: "https://pub.dartlang.org"
23 | source: hosted
24 | version: "0.2.9+1"
25 | charcode:
26 | dependency: transitive
27 | description:
28 | name: charcode
29 | url: "https://pub.dartlang.org"
30 | source: hosted
31 | version: "1.1.2"
32 | collection:
33 | dependency: transitive
34 | description:
35 | name: collection
36 | url: "https://pub.dartlang.org"
37 | source: hosted
38 | version: "1.14.11"
39 | cupertino_icons:
40 | dependency: "direct main"
41 | description:
42 | name: cupertino_icons
43 | url: "https://pub.dartlang.org"
44 | source: hosted
45 | version: "0.1.2"
46 | flutter:
47 | dependency: "direct main"
48 | description: flutter
49 | source: sdk
50 | version: "0.0.0"
51 | flutter_test:
52 | dependency: "direct dev"
53 | description: flutter
54 | source: sdk
55 | version: "0.0.0"
56 | image_picker:
57 | dependency: "direct main"
58 | description:
59 | name: image_picker
60 | url: "https://pub.dartlang.org"
61 | source: hosted
62 | version: "0.4.12+1"
63 | matcher:
64 | dependency: transitive
65 | description:
66 | name: matcher
67 | url: "https://pub.dartlang.org"
68 | source: hosted
69 | version: "0.12.3+1"
70 | meta:
71 | dependency: transitive
72 | description:
73 | name: meta
74 | url: "https://pub.dartlang.org"
75 | source: hosted
76 | version: "1.1.6"
77 | path:
78 | dependency: transitive
79 | description:
80 | name: path
81 | url: "https://pub.dartlang.org"
82 | source: hosted
83 | version: "1.6.2"
84 | path_provider:
85 | dependency: "direct main"
86 | description:
87 | name: path_provider
88 | url: "https://pub.dartlang.org"
89 | source: hosted
90 | version: "0.4.1"
91 | quiver:
92 | dependency: transitive
93 | description:
94 | name: quiver
95 | url: "https://pub.dartlang.org"
96 | source: hosted
97 | version: "2.0.1"
98 | sky_engine:
99 | dependency: transitive
100 | description: flutter
101 | source: sdk
102 | version: "0.0.99"
103 | source_span:
104 | dependency: transitive
105 | description:
106 | name: source_span
107 | url: "https://pub.dartlang.org"
108 | source: hosted
109 | version: "1.4.1"
110 | stack_trace:
111 | dependency: transitive
112 | description:
113 | name: stack_trace
114 | url: "https://pub.dartlang.org"
115 | source: hosted
116 | version: "1.9.3"
117 | stream_channel:
118 | dependency: transitive
119 | description:
120 | name: stream_channel
121 | url: "https://pub.dartlang.org"
122 | source: hosted
123 | version: "1.6.8"
124 | string_scanner:
125 | dependency: transitive
126 | description:
127 | name: string_scanner
128 | url: "https://pub.dartlang.org"
129 | source: hosted
130 | version: "1.0.4"
131 | term_glyph:
132 | dependency: transitive
133 | description:
134 | name: term_glyph
135 | url: "https://pub.dartlang.org"
136 | source: hosted
137 | version: "1.0.1"
138 | test_api:
139 | dependency: transitive
140 | description:
141 | name: test_api
142 | url: "https://pub.dartlang.org"
143 | source: hosted
144 | version: "0.2.1"
145 | typed_data:
146 | dependency: transitive
147 | description:
148 | name: typed_data
149 | url: "https://pub.dartlang.org"
150 | source: hosted
151 | version: "1.1.6"
152 | vector_math:
153 | dependency: transitive
154 | description:
155 | name: vector_math
156 | url: "https://pub.dartlang.org"
157 | source: hosted
158 | version: "2.0.8"
159 | video_player:
160 | dependency: "direct main"
161 | description:
162 | name: video_player
163 | url: "https://pub.dartlang.org"
164 | source: hosted
165 | version: "0.7.2"
166 | sdks:
167 | dart: ">=2.0.0 <3.0.0"
168 | flutter: ">=0.2.5 <2.0.0"
169 |
--------------------------------------------------------------------------------
/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_video_recorder_app
2 | description: A new Flutter Video Recorder application.
3 |
4 | version: 1.0.0+1
5 |
6 | environment:
7 | sdk: ">=2.0.0-dev.68.0 <3.0.0"
8 |
9 | dependencies:
10 | flutter:
11 | sdk: flutter
12 |
13 | cupertino_icons: ^0.1.2
14 | camera: ^0.2.6
15 | path_provider: ^0.4.1
16 | video_player: ^0.7.2
17 | image_picker: ^0.4.10
18 |
19 | dev_dependencies:
20 | flutter_test:
21 | sdk: flutter
22 |
23 | flutter:
24 |
25 | uses-material-design: true
26 |
27 |
28 | assets:
29 | - assets/images/ic_flutter_devs_logo.png
30 | - assets/images/ic_powered_by.png
31 | - assets/images/ic_switch_camera_3.png
32 | - assets/images/ic_no_video.png
33 | - assets/images/ic_play.png
34 | - assets/images/ic_stop_video.png
35 | - assets/images/ic_video_shutter.png
36 |
37 |
--------------------------------------------------------------------------------
/res/values/strings_en.arb:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/screens/android1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/screens/android1.jpg
--------------------------------------------------------------------------------
/screens/android2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/screens/android2.jpg
--------------------------------------------------------------------------------
/screens/android3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/screens/android3.jpg
--------------------------------------------------------------------------------
/screens/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/screens/demo.gif
--------------------------------------------------------------------------------
/screens/iphone1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/screens/iphone1.jpg
--------------------------------------------------------------------------------
/screens/iphone2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/screens/iphone2.jpg
--------------------------------------------------------------------------------
/screens/iphone3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/flutter-devs/flutter_video_recorder/6c5a95aac4a75774e0b1f36a889fcb75aca22c86/screens/iphone3.jpg
--------------------------------------------------------------------------------
/test/widget_test.dart:
--------------------------------------------------------------------------------
1 | // This is a basic Flutter widget test.
2 | // To perform an interaction with a widget in your test, use the WidgetTester utility that Flutter
3 | // provides. For example, you can send tap and scroll gestures. You can also use WidgetTester to
4 | // find child widgets in the widget tree, read text, and verify that the values of widget properties
5 | // are correct.
6 |
7 | import 'package:flutter/material.dart';
8 | import 'package:flutter_test/flutter_test.dart';
9 |
10 | import 'package:flutter_video_recorder_app/main.dart';
11 |
12 | void main() {
13 | testWidgets('Counter increments smoke test', (WidgetTester tester) async {
14 | // Build our app and trigger a frame.
15 | await tester.pumpWidget(new MyApp());
16 |
17 | // Verify that our counter starts at 0.
18 | expect(find.text('0'), findsOneWidget);
19 | expect(find.text('1'), findsNothing);
20 |
21 | // Tap the '+' icon and trigger a frame.
22 | await tester.tap(find.byIcon(Icons.add));
23 | await tester.pump();
24 |
25 | // Verify that our counter has incremented.
26 | expect(find.text('0'), findsNothing);
27 | expect(find.text('1'), findsOneWidget);
28 | });
29 | }
30 |
--------------------------------------------------------------------------------