Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
D
dispatcher_test
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Packages
Packages
Container Registry
Analytics
CI / CD Analytics
Repository Analytics
Value Stream Analytics
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Gavin An
dispatcher_test
Commits
5bbe2a21
Commit
5bbe2a21
authored
Aug 12, 2024
by
Gavin An
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fcm 테스트
parent
33b55aff
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
430 additions
and
82 deletions
+430
-82
android/app/build.gradle
android/app/build.gradle
+6
-0
android/app/src/main/AndroidManifest.xml
android/app/src/main/AndroidManifest.xml
+81
-57
ios/Runner/AppDelegate.swift
ios/Runner/AppDelegate.swift
+10
-0
lib/main.dart
lib/main.dart
+50
-2
lib/notification_page.dart
lib/notification_page.dart
+96
-0
lib/text_to_speech_page.dart
lib/text_to_speech_page.dart
+12
-11
macos/Flutter/GeneratedPluginRegistrant.swift
macos/Flutter/GeneratedPluginRegistrant.swift
+4
-0
pubspec.lock
pubspec.lock
+164
-12
pubspec.yaml
pubspec.yaml
+3
-0
windows/flutter/generated_plugin_registrant.cc
windows/flutter/generated_plugin_registrant.cc
+3
-0
windows/flutter/generated_plugins.cmake
windows/flutter/generated_plugins.cmake
+1
-0
No files found.
android/app/build.gradle
View file @
5bbe2a21
...
@@ -29,6 +29,7 @@ android {
...
@@ -29,6 +29,7 @@ android {
ndkVersion
=
"25.2.9519653"
ndkVersion
=
"25.2.9519653"
compileOptions
{
compileOptions
{
coreLibraryDesugaringEnabled
true
sourceCompatibility
JavaVersion
.
VERSION_17
sourceCompatibility
JavaVersion
.
VERSION_17
targetCompatibility
JavaVersion
.
VERSION_17
targetCompatibility
JavaVersion
.
VERSION_17
}
}
...
@@ -40,6 +41,7 @@ android {
...
@@ -40,6 +41,7 @@ android {
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdk
=
23
minSdk
=
23
targetSdk
=
34
targetSdk
=
34
multiDexEnabled
true
versionCode
=
flutterVersionCode
.
toInteger
()
versionCode
=
flutterVersionCode
.
toInteger
()
versionName
=
flutterVersionName
versionName
=
flutterVersionName
}
}
...
@@ -60,4 +62,8 @@ flutter {
...
@@ -60,4 +62,8 @@ flutter {
dependencies
{
dependencies
{
implementation
"org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10"
implementation
"org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10"
implementation
platform
(
'com.google.firebase:firebase-bom:32.8.0'
)
implementation
platform
(
'com.google.firebase:firebase-bom:32.8.0'
)
implementation
'androidx.window:window:1.0.0'
implementation
'androidx.window:window-java:1.0.0'
coreLibraryDesugaring
'com.android.tools:desugar_jdk_libs:1.2.2'
}
}
\ No newline at end of file
android/app/src/main/AndroidManifest.xml
View file @
5bbe2a21
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<manifest
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<uses-permission
android:name=
"android.permission.RECORD_AUDIO"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.RECORD_AUDIO"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH_ADMIN"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH_CONNECT"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH_ADMIN"
/>
<uses-permission
android:name=
"android.permission.BLUETOOTH_CONNECT"
/>
<uses-permission
android:name=
"android.permission.RECEIVE_BOOT_COMPLETED"
/>
<uses-permission
android:name=
"android.permission.VIBRATE"
/>
<uses-permission
android:name=
"android.permission.WAKE_LOCK"
/>
<uses-permission
android:name=
"android.permission.USE_FULL_SCREEN_INTENT"
/>
<uses-permission
android:name=
"android.permission.SCHEDULE_EXACT_ALARM"
android:maxSdkVersion=
"32"
/>
<queries>
<queries>
<intent>
<intent>
<action
android:name=
"android.speech.RecognitionService"
/>
<action
android:name=
"android.speech.RecognitionService"
/>
</intent>
</intent>
</queries>
</queries>
<application
<application
android:label=
"dispatcher_test"
android:name=
"${applicationName}"
android:name=
"${applicationName}"
android:icon=
"@mipmap/ic_launcher"
>
android:icon=
"@mipmap/ic_launcher"
android:label=
"dispatcher_test"
>
<activity
<activity
android:name=
".MainActivity"
android:name=
".MainActivity"
android:configChanges=
"orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:exported=
"true"
android:exported=
"true"
android:hardwareAccelerated=
"true"
android:launchMode=
"singleTop"
android:launchMode=
"singleTop"
android:showWhenLocked=
"true"
android:taskAffinity=
""
android:taskAffinity=
""
android:theme=
"@style/LaunchTheme"
android:theme=
"@style/LaunchTheme"
android:configChanges=
"orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:turnScreenOn=
"true"
android:hardwareAccelerated=
"true"
android:windowSoftInputMode=
"adjustResize"
>
android:windowSoftInputMode=
"adjustResize"
>
<!-- Specifies an Android theme to apply to this Activity as soon as
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
the Android process has started. This theme is visible to the user
...
@@ -28,11 +39,10 @@
...
@@ -28,11 +39,10 @@
to determine the Window background behind the Flutter UI. -->
to determine the Window background behind the Flutter UI. -->
<meta-data
<meta-data
android:name=
"io.flutter.embedding.android.NormalTheme"
android:name=
"io.flutter.embedding.android.NormalTheme"
android:resource=
"@style/NormalTheme"
android:resource=
"@style/NormalTheme"
/>
/>
<intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</intent-filter>
</activity>
</activity>
<!-- Don't delete the meta-data below.
<!-- Don't delete the meta-data below.
...
@@ -40,6 +50,20 @@
...
@@ -40,6 +50,20 @@
<meta-data
<meta-data
android:name=
"flutterEmbedding"
android:name=
"flutterEmbedding"
android:value=
"2"
/>
android:value=
"2"
/>
<receiver
android:name=
"com.dexterous.flutterlocalnotifications.ScheduledNotificationReceiver"
android:exported=
"false"
/>
<receiver
android:name=
"com.dexterous.flutterlocalnotifications.ScheduledNotificationBootReceiver"
android:exported=
"false"
>
<intent-filter>
<action
android:name=
"android.intent.action.BOOT_COMPLETED"
/>
<action
android:name=
"android.intent.action.MY_PACKAGE_REPLACED"
/>
<action
android:name=
"android.intent.action.QUICKBOOT_POWERON"
/>
<action
android:name=
"com.htc.intent.action.QUICKBOOT_POWERON"
/>
</intent-filter>
</receiver>
</application>
</application>
<!-- Required to query activities that can process text, see:
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/training/package-visibility and
...
@@ -48,8 +72,8 @@
...
@@ -48,8 +72,8 @@
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<queries>
<intent>
<intent>
<action
android:name=
"android.intent.action.PROCESS_TEXT"
/>
<action
android:name=
"android.intent.action.PROCESS_TEXT"
/>
<data
android:mimeType=
"text/plain"
/>
<data
android:mimeType=
"text/plain"
/>
</intent>
</intent>
</queries>
</queries>
<queries>
<queries>
...
...
ios/Runner/AppDelegate.swift
View file @
5bbe2a21
...
@@ -7,6 +7,16 @@ import UIKit
...
@@ -7,6 +7,16 @@ import UIKit
_
application
:
UIApplication
,
_
application
:
UIApplication
,
didFinishLaunchingWithOptions
launchOptions
:
[
UIApplication
.
LaunchOptionsKey
:
Any
]?
didFinishLaunchingWithOptions
launchOptions
:
[
UIApplication
.
LaunchOptionsKey
:
Any
]?
)
->
Bool
{
)
->
Bool
{
// This is required to make any communication available in the action isolate.
FlutterLocalNotificationsPlugin
.
setPluginRegistrantCallback
{
(
registry
)
in
GeneratedPluginRegistrant
.
register
(
with
:
registry
)
}
if
#available(iOS 10.0, *)
{
UNUserNotificationCenter
.
current
()
.
delegate
=
self
as?
UNUserNotificationCenterDelegate
}
GeneratedPluginRegistrant
.
register
(
with
:
self
)
GeneratedPluginRegistrant
.
register
(
with
:
self
)
return
super
.
application
(
application
,
didFinishLaunchingWithOptions
:
launchOptions
)
return
super
.
application
(
application
,
didFinishLaunchingWithOptions
:
launchOptions
)
}
}
...
...
lib/main.dart
View file @
5bbe2a21
...
@@ -2,10 +2,13 @@ import 'dart:math';
...
@@ -2,10 +2,13 @@ import 'dart:math';
import
'package:cloud_firestore/cloud_firestore.dart'
;
import
'package:cloud_firestore/cloud_firestore.dart'
;
import
'package:dispatcher_test/firebase_options.dart'
;
import
'package:dispatcher_test/firebase_options.dart'
;
import
'package:dispatcher_test/notification_page.dart'
;
import
'package:dispatcher_test/speech_to_text_page.dart'
;
import
'package:dispatcher_test/speech_to_text_page.dart'
;
import
'package:dispatcher_test/text_to_speech_page.dart'
;
import
'package:dispatcher_test/text_to_speech_page.dart'
;
import
'package:firebase_core/firebase_core.dart'
;
import
'package:firebase_core/firebase_core.dart'
;
import
'package:firebase_messaging/firebase_messaging.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter/material.dart'
;
import
'package:permission_handler/permission_handler.dart'
;
import
'package:speech_to_text/speech_to_text.dart'
;
import
'package:speech_to_text/speech_to_text.dart'
;
const
List
<
String
>
sample
=
[
const
List
<
String
>
sample
=
[
...
@@ -19,9 +22,21 @@ const List<String> sample = [
...
@@ -19,9 +22,21 @@ const List<String> sample = [
'욕망 덩어리'
'욕망 덩어리'
];
];
@pragma
(
'vm:entry-point'
)
Future
<
void
>
_firebaseMessagingBackgroundHandler
(
RemoteMessage
message
)
async
{
await
Firebase
.
initializeApp
(
options:
DefaultFirebaseOptions
.
currentPlatform
);
await
setupFlutterNotifications
();
showFlutterNotification
(
message
);
// If you're going to use other Firebase services in the background, such as Firestore,
// make sure you call `initializeApp` before using other Firebase services.
print
(
'Handling a background message
${message.messageId}
'
);
}
void
main
(
)
async
{
void
main
(
)
async
{
WidgetsFlutterBinding
.
ensureInitialized
();
WidgetsFlutterBinding
.
ensureInitialized
();
await
Firebase
.
initializeApp
(
options:
DefaultFirebaseOptions
.
currentPlatform
);
await
Firebase
.
initializeApp
(
options:
DefaultFirebaseOptions
.
currentPlatform
);
FirebaseMessaging
.
onBackgroundMessage
(
_firebaseMessagingBackgroundHandler
);
FirebaseFirestore
.
instance
.
settings
=
const
Settings
(
FirebaseFirestore
.
instance
.
settings
=
const
Settings
(
persistenceEnabled:
true
,
persistenceEnabled:
true
,
);
);
...
@@ -35,7 +50,7 @@ class MyApp extends StatelessWidget {
...
@@ -35,7 +50,7 @@ class MyApp extends StatelessWidget {
@override
@override
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
MaterialApp
(
return
MaterialApp
(
title:
'
Flutter Demo
'
,
title:
'
Dispatcher TEST
'
,
theme:
ThemeData
(
theme:
ThemeData
(
// This is the theme of your application.
// This is the theme of your application.
//
//
...
@@ -55,7 +70,7 @@ class MyApp extends StatelessWidget {
...
@@ -55,7 +70,7 @@ class MyApp extends StatelessWidget {
colorScheme:
ColorScheme
.
fromSeed
(
seedColor:
Colors
.
deepPurple
),
colorScheme:
ColorScheme
.
fromSeed
(
seedColor:
Colors
.
deepPurple
),
useMaterial3:
true
,
useMaterial3:
true
,
),
),
home:
const
MyHomePage
(
title:
'
Flutter Demo Home Page
'
),
home:
const
MyHomePage
(
title:
'
Dispatcher TEST
'
),
);
);
}
}
}
}
...
@@ -85,6 +100,14 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -85,6 +100,14 @@ class _MyHomePageState extends State<MyHomePage> {
@override
@override
void
initState
()
{
void
initState
()
{
super
.
initState
();
super
.
initState
();
requestPermission
();
}
void
requestPermission
()
async
{
if
(
await
Permission
.
notification
.
isDenied
&&
!
await
Permission
.
notification
.
isPermanentlyDenied
)
{
await
Permission
.
notification
.
request
();
}
}
}
@override
@override
...
@@ -123,6 +146,9 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -123,6 +146,9 @@ class _MyHomePageState extends State<MyHomePage> {
style:
TextStyle
(
color:
Colors
.
black
),
style:
TextStyle
(
color:
Colors
.
black
),
),
),
),
),
const
SizedBox
(
height:
10
,
),
TextButton
(
TextButton
(
style:
const
ButtonStyle
(
style:
const
ButtonStyle
(
backgroundColor:
WidgetStatePropertyAll
(
Colors
.
amber
),
backgroundColor:
WidgetStatePropertyAll
(
Colors
.
amber
),
...
@@ -139,6 +165,28 @@ class _MyHomePageState extends State<MyHomePage> {
...
@@ -139,6 +165,28 @@ class _MyHomePageState extends State<MyHomePage> {
style:
TextStyle
(
color:
Colors
.
black
),
style:
TextStyle
(
color:
Colors
.
black
),
),
),
),
),
const
SizedBox
(
height:
10
,
),
TextButton
(
style:
const
ButtonStyle
(
backgroundColor:
WidgetStatePropertyAll
(
Colors
.
amber
),
minimumSize:
WidgetStatePropertyAll
(
Size
.
fromHeight
(
30
))),
onPressed:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
const
GenerateNotificationPage
(),
));
},
child:
const
Text
(
'알림입력'
,
style:
TextStyle
(
color:
Colors
.
black
),
),
),
const
SizedBox
(
height:
10
,
),
Center
(
Center
(
// Center is a layout widget. It takes a single child and positions it
// Center is a layout widget. It takes a single child and positions it
// in the middle of the parent.
// in the middle of the parent.
...
...
lib/notification_page.dart
0 → 100644
View file @
5bbe2a21
import
'package:flutter/material.dart'
;
import
'package:flutter_local_notifications/flutter_local_notifications.dart'
;
class
GenerateNotificationPage
extends
StatefulWidget
{
const
GenerateNotificationPage
({
super
.
key
});
@override
State
<
GenerateNotificationPage
>
createState
()
=>
_GenerateNotificationPageState
();
}
class
_GenerateNotificationPageState
extends
State
<
GenerateNotificationPage
>
{
final
FlutterLocalNotificationsPlugin
flutterLocalNotificationsPlugin
=
FlutterLocalNotificationsPlugin
();
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
body:
Center
(
child:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
TextButton
(
style:
const
ButtonStyle
(
backgroundColor:
WidgetStatePropertyAll
(
Colors
.
amber
),
minimumSize:
WidgetStatePropertyAll
(
Size
.
fromHeight
(
30
))),
onPressed:
()
{
NotificationDetails
details
=
const
NotificationDetails
(
iOS:
DarwinNotificationDetails
(
presentAlert:
true
,
presentBadge:
true
,
presentSound:
true
,
),
android:
AndroidNotificationDetails
(
"show_test"
,
"show_test"
,
importance:
Importance
.
max
,
priority:
Priority
.
high
,
actions:
[
]
),
);
flutterLocalNotificationsPlugin
.
show
(
0
,
"타이틀이 보여지는 영역입니다."
,
"컨텐츠 내용이 보여지는 영역입니다.
\n
노티알림 입니다."
,
details
,
payload:
"tyger://"
,
);
},
child:
const
Text
(
'알림 전송'
,
style:
TextStyle
(
color:
Colors
.
black
),
),
),
],
),
),
);
}
@override
void
initState
()
{
super
.
initState
();
initNotification
();
}
Future
<
void
>
initNotification
()
async
{
// initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project
const
AndroidInitializationSettings
androidInitSettings
=
AndroidInitializationSettings
(
'@mipmap/ic_launcher'
);
final
DarwinInitializationSettings
darwinInitSettings
=
DarwinInitializationSettings
(
requestSoundPermission:
false
,
requestBadgePermission:
false
,
requestAlertPermission:
false
,
onDidReceiveLocalNotification:
(
id
,
title
,
body
,
payload
)
{},
);
const
LinuxInitializationSettings
initializationSettingsLinux
=
LinuxInitializationSettings
(
defaultActionName:
'Open notification'
);
final
InitializationSettings
initializationSettings
=
InitializationSettings
(
android:
androidInitSettings
,
linux:
initializationSettingsLinux
,
iOS:
darwinInitSettings
,
macOS:
darwinInitSettings
,
);
await
flutterLocalNotificationsPlugin
.
initialize
(
initializationSettings
,
onDidReceiveNotificationResponse:
(
details
)
{},
);
}
}
lib/text_to_speech_page.dart
View file @
5bbe2a21
...
@@ -153,7 +153,8 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
...
@@ -153,7 +153,8 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
}
}
List
<
DropdownMenuItem
<
String
>>
getEnginesDropDownMenuItems
(
List
<
DropdownMenuItem
<
String
>>
getEnginesDropDownMenuItems
(
List
<
dynamic
>
engines
)
{
List
<
dynamic
>
engines
,
)
{
var
items
=
<
DropdownMenuItem
<
String
>>[];
var
items
=
<
DropdownMenuItem
<
String
>>[];
for
(
dynamic
type
in
engines
)
{
for
(
dynamic
type
in
engines
)
{
items
.
add
(
DropdownMenuItem
(
items
.
add
(
DropdownMenuItem
(
...
@@ -202,7 +203,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
...
@@ -202,7 +203,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
Widget
build
(
BuildContext
context
)
{
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
return
Scaffold
(
appBar:
AppBar
(
appBar:
AppBar
(
title:
Text
(
'Flutter TTS'
),
title:
const
Text
(
'Flutter TTS'
),
),
),
body:
SingleChildScrollView
(
body:
SingleChildScrollView
(
scrollDirection:
Axis
.
vertical
,
scrollDirection:
Axis
.
vertical
,
...
@@ -228,9 +229,9 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
...
@@ -228,9 +229,9 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
if
(
snapshot
.
hasData
)
{
if
(
snapshot
.
hasData
)
{
return
_enginesDropDownSection
(
snapshot
.
data
as
List
<
dynamic
>);
return
_enginesDropDownSection
(
snapshot
.
data
as
List
<
dynamic
>);
}
else
if
(
snapshot
.
hasError
)
{
}
else
if
(
snapshot
.
hasError
)
{
return
Text
(
'Error loading engines...'
);
return
const
Text
(
'Error loading engines...'
);
}
else
}
else
return
Text
(
'Loading engines...'
);
return
const
Text
(
'Loading engines...'
);
});
});
}
else
}
else
return
Container
(
width:
0
,
height:
0
);
return
Container
(
width:
0
,
height:
0
);
...
@@ -242,14 +243,14 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
...
@@ -242,14 +243,14 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
if
(
snapshot
.
hasData
)
{
if
(
snapshot
.
hasData
)
{
return
_languageDropDownSection
(
snapshot
.
data
as
List
<
dynamic
>);
return
_languageDropDownSection
(
snapshot
.
data
as
List
<
dynamic
>);
}
else
if
(
snapshot
.
hasError
)
{
}
else
if
(
snapshot
.
hasError
)
{
return
Text
(
'Error loading languages...'
);
return
const
Text
(
'Error loading languages...'
);
}
else
}
else
return
Text
(
'Loading Languages...'
);
return
const
Text
(
'Loading Languages...'
);
});
});
Widget
_inputSection
()
=>
Container
(
Widget
_inputSection
()
=>
Container
(
alignment:
Alignment
.
topCenter
,
alignment:
Alignment
.
topCenter
,
padding:
EdgeInsets
.
only
(
top:
25.0
,
left:
25.0
,
right:
25.0
),
padding:
const
EdgeInsets
.
only
(
top:
25.0
,
left:
25.0
,
right:
25.0
),
child:
TextField
(
child:
TextField
(
maxLines:
11
,
maxLines:
11
,
minLines:
6
,
minLines:
6
,
...
@@ -260,7 +261,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
...
@@ -260,7 +261,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
Widget
_btnSection
()
{
Widget
_btnSection
()
{
return
Container
(
return
Container
(
padding:
EdgeInsets
.
only
(
top:
50.0
),
padding:
const
EdgeInsets
.
only
(
top:
50.0
),
child:
Row
(
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
spaceEvenly
,
mainAxisAlignment:
MainAxisAlignment
.
spaceEvenly
,
children:
[
children:
[
...
@@ -276,7 +277,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
...
@@ -276,7 +277,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
}
}
Widget
_enginesDropDownSection
(
List
<
dynamic
>
engines
)
=>
Container
(
Widget
_enginesDropDownSection
(
List
<
dynamic
>
engines
)
=>
Container
(
padding:
EdgeInsets
.
only
(
top:
50.0
),
padding:
const
EdgeInsets
.
only
(
top:
50.0
),
child:
DropdownButton
(
child:
DropdownButton
(
value:
engine
,
value:
engine
,
items:
getEnginesDropDownMenuItems
(
engines
),
items:
getEnginesDropDownMenuItems
(
engines
),
...
@@ -285,7 +286,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
...
@@ -285,7 +286,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
);
);
Widget
_languageDropDownSection
(
List
<
dynamic
>
languages
)
=>
Container
(
Widget
_languageDropDownSection
(
List
<
dynamic
>
languages
)
=>
Container
(
padding:
EdgeInsets
.
only
(
top:
10.0
),
padding:
const
EdgeInsets
.
only
(
top:
10.0
),
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
child:
Row
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
DropdownButton
(
DropdownButton
(
value:
language
,
value:
language
,
...
@@ -324,7 +325,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
...
@@ -324,7 +325,7 @@ class _TextToSpeechPageState extends State<TextToSpeechPage> {
mainAxisAlignment:
MainAxisAlignment
.
spaceEvenly
,
mainAxisAlignment:
MainAxisAlignment
.
spaceEvenly
,
children:
[
children:
[
ElevatedButton
(
ElevatedButton
(
child:
Text
(
'Get max speech input length'
),
child:
const
Text
(
'Get max speech input length'
),
onPressed:
()
async
{
onPressed:
()
async
{
_inputLength
=
await
flutterTts
.
getMaxSpeechInputLength
;
_inputLength
=
await
flutterTts
.
getMaxSpeechInputLength
;
setState
(()
{});
setState
(()
{});
...
...
macos/Flutter/GeneratedPluginRegistrant.swift
View file @
5bbe2a21
...
@@ -7,12 +7,16 @@ import Foundation
...
@@ -7,12 +7,16 @@ import Foundation
import
cloud_firestore
import
cloud_firestore
import
firebase_core
import
firebase_core
import
firebase_messaging
import
flutter_local_notifications
import
flutter_tts
import
flutter_tts
import
speech_to_text_macos
import
speech_to_text_macos
func
RegisterGeneratedPlugins
(
registry
:
FlutterPluginRegistry
)
{
func
RegisterGeneratedPlugins
(
registry
:
FlutterPluginRegistry
)
{
FLTFirebaseFirestorePlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"FLTFirebaseFirestorePlugin"
))
FLTFirebaseFirestorePlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"FLTFirebaseFirestorePlugin"
))
FLTFirebaseCorePlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"FLTFirebaseCorePlugin"
))
FLTFirebaseCorePlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"FLTFirebaseCorePlugin"
))
FLTFirebaseMessagingPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"FLTFirebaseMessagingPlugin"
))
FlutterLocalNotificationsPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"FlutterLocalNotificationsPlugin"
))
FlutterTtsPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"FlutterTtsPlugin"
))
FlutterTtsPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"FlutterTtsPlugin"
))
SpeechToTextMacosPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"SpeechToTextMacosPlugin"
))
SpeechToTextMacosPlugin
.
register
(
with
:
registry
.
registrar
(
forPlugin
:
"SpeechToTextMacosPlugin"
))
}
}
pubspec.lock
View file @
5bbe2a21
...
@@ -9,6 +9,14 @@ packages:
...
@@ -9,6 +9,14 @@ packages:
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "1.3.40"
version: "1.3.40"
args:
dependency: transitive
description:
name: args
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
url: "https://pub.dev"
source: hosted
version: "2.5.0"
async:
async:
dependency: transitive
dependency: transitive
description:
description:
...
@@ -81,6 +89,14 @@ packages:
...
@@ -81,6 +89,14 @@ packages:
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "1.0.8"
version: "1.0.8"
dbus:
dependency: transitive
description:
name: dbus
sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
url: "https://pub.dev"
source: hosted
version: "0.7.10"
fake_async:
fake_async:
dependency: transitive
dependency: transitive
description:
description:
...
@@ -89,6 +105,14 @@ packages:
...
@@ -89,6 +105,14 @@ packages:
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "1.3.1"
version: "1.3.1"
ffi:
dependency: transitive
description:
name: ffi
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
firebase_core:
firebase_core:
dependency: "direct main"
dependency: "direct main"
description:
description:
...
@@ -113,6 +137,30 @@ packages:
...
@@ -113,6 +137,30 @@ packages:
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "2.17.4"
version: "2.17.4"
firebase_messaging:
dependency: "direct main"
description:
name: firebase_messaging
sha256: "1b0a4f9ecbaf9007771bac152afad738ddfacc4b8431a7591c00829480d99553"
url: "https://pub.dev"
source: hosted
version: "15.0.4"
firebase_messaging_platform_interface:
dependency: transitive
description:
name: firebase_messaging_platform_interface
sha256: c5a6443e66ae064fe186901d740ee7ce648ca2a6fd0484b8c5e963849ac0fc28
url: "https://pub.dev"
source: hosted
version: "4.5.42"
firebase_messaging_web:
dependency: transitive
description:
name: firebase_messaging_web
sha256: "232ef63b986467ae5b5577a09c2502b26e2e2aebab5b85e6c966a5ca9b038b89"
url: "https://pub.dev"
source: hosted
version: "3.8.12"
flutter:
flutter:
dependency: "direct main"
dependency: "direct main"
description: flutter
description: flutter
...
@@ -126,6 +174,30 @@ packages:
...
@@ -126,6 +174,30 @@ packages:
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "3.0.2"
version: "3.0.2"
flutter_local_notifications:
dependency: "direct main"
description:
name: flutter_local_notifications
sha256: dd6676d8c2926537eccdf9f72128bbb2a9d0814689527b17f92c248ff192eaf3
url: "https://pub.dev"
source: hosted
version: "17.2.1+2"
flutter_local_notifications_linux:
dependency: transitive
description:
name: flutter_local_notifications_linux
sha256: c49bd06165cad9beeb79090b18cd1eb0296f4bf4b23b84426e37dd7c027fc3af
url: "https://pub.dev"
source: hosted
version: "4.0.1"
flutter_local_notifications_platform_interface:
dependency: transitive
description:
name: flutter_local_notifications_platform_interface
sha256: "85f8d07fe708c1bdcf45037f2c0109753b26ae077e9d9e899d55971711a4ea66"
url: "https://pub.dev"
source: hosted
version: "7.2.0"
flutter_test:
flutter_test:
dependency: "direct dev"
dependency: "direct dev"
description: flutter
description: flutter
...
@@ -164,18 +236,18 @@ packages:
...
@@ -164,18 +236,18 @@ packages:
dependency: transitive
dependency: transitive
description:
description:
name: leak_tracker
name: leak_tracker
sha256: "
7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a
"
sha256: "
3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05
"
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "10.0.
4
"
version: "10.0.
5
"
leak_tracker_flutter_testing:
leak_tracker_flutter_testing:
dependency: transitive
dependency: transitive
description:
description:
name: leak_tracker_flutter_testing
name: leak_tracker_flutter_testing
sha256: "
06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8
"
sha256: "
932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806
"
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "3.0.
3
"
version: "3.0.
5
"
leak_tracker_testing:
leak_tracker_testing:
dependency: transitive
dependency: transitive
description:
description:
...
@@ -204,18 +276,18 @@ packages:
...
@@ -204,18 +276,18 @@ packages:
dependency: transitive
dependency: transitive
description:
description:
name: material_color_utilities
name: material_color_utilities
sha256:
"0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
sha256:
f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "0.
8.0
"
version: "0.
11.1
"
meta:
meta:
dependency: transitive
dependency: transitive
description:
description:
name: meta
name: meta
sha256:
"7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
sha256:
bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "1.1
2
.0"
version: "1.1
5
.0"
path:
path:
dependency: transitive
dependency: transitive
description:
description:
...
@@ -232,6 +304,62 @@ packages:
...
@@ -232,6 +304,62 @@ packages:
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "1.11.1"
version: "1.11.1"
permission_handler:
dependency: "direct main"
description:
name: permission_handler
sha256: "18bf33f7fefbd812f37e72091a15575e72d5318854877e0e4035a24ac1113ecb"
url: "https://pub.dev"
source: hosted
version: "11.3.1"
permission_handler_android:
dependency: transitive
description:
name: permission_handler_android
sha256: eaf2a1ec4472775451e88ca6a7b86559ef2f1d1ed903942ed135e38ea0097dca
url: "https://pub.dev"
source: hosted
version: "12.0.8"
permission_handler_apple:
dependency: transitive
description:
name: permission_handler_apple
sha256: e6f6d73b12438ef13e648c4ae56bd106ec60d17e90a59c4545db6781229082a0
url: "https://pub.dev"
source: hosted
version: "9.4.5"
permission_handler_html:
dependency: transitive
description:
name: permission_handler_html
sha256: "6cac773d389e045a8d4f85418d07ad58ef9e42a56e063629ce14c4c26344de24"
url: "https://pub.dev"
source: hosted
version: "0.1.2"
permission_handler_platform_interface:
dependency: transitive
description:
name: permission_handler_platform_interface
sha256: fe0ffe274d665be8e34f9c59705441a7d248edebbe5d9e3ec2665f88b79358ea
url: "https://pub.dev"
source: hosted
version: "4.2.2"
permission_handler_windows:
dependency: transitive
description:
name: permission_handler_windows
sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e"
url: "https://pub.dev"
source: hosted
version: "0.2.1"
petitparser:
dependency: transitive
description:
name: petitparser
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
url: "https://pub.dev"
source: hosted
version: "6.0.2"
plugin_platform_interface:
plugin_platform_interface:
dependency: transitive
dependency: transitive
description:
description:
...
@@ -313,10 +441,18 @@ packages:
...
@@ -313,10 +441,18 @@ packages:
dependency: transitive
dependency: transitive
description:
description:
name: test_api
name: test_api
sha256: "
9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f
"
sha256: "
5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb
"
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "0.7.0"
version: "0.7.2"
timezone:
dependency: transitive
description:
name: timezone
sha256: "2236ec079a174ce07434e89fcd3fcda430025eb7692244139a9cf54fdcf1fc7d"
url: "https://pub.dev"
source: hosted
version: "0.9.4"
vector_math:
vector_math:
dependency: transitive
dependency: transitive
description:
description:
...
@@ -329,10 +465,10 @@ packages:
...
@@ -329,10 +465,10 @@ packages:
dependency: transitive
dependency: transitive
description:
description:
name: vm_service
name: vm_service
sha256:
"3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
sha256:
f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "14.2.
1
"
version: "14.2.
4
"
web:
web:
dependency: transitive
dependency: transitive
description:
description:
...
@@ -341,6 +477,22 @@ packages:
...
@@ -341,6 +477,22 @@ packages:
url: "https://pub.dev"
url: "https://pub.dev"
source: hosted
source: hosted
version: "0.5.1"
version: "0.5.1"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
url: "https://pub.dev"
source: hosted
version: "1.0.4"
xml:
dependency: transitive
description:
name: xml
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
url: "https://pub.dev"
source: hosted
version: "6.5.0"
sdks:
sdks:
dart: ">=3.4.4 <4.0.0"
dart: ">=3.4.4 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
flutter: ">=3.18.0-18.0.pre.54"
pubspec.yaml
View file @
5bbe2a21
...
@@ -39,6 +39,9 @@ dependencies:
...
@@ -39,6 +39,9 @@ dependencies:
cloud_firestore
:
^5.2.0
cloud_firestore
:
^5.2.0
speech_to_text
:
^6.6.2
speech_to_text
:
^6.6.2
flutter_tts
:
^4.0.2
flutter_tts
:
^4.0.2
flutter_local_notifications
:
^17.2.1+2
permission_handler
:
^11.3.1
firebase_messaging
:
^15.0.4
dev_dependencies
:
dev_dependencies
:
flutter_test
:
flutter_test
:
sdk
:
flutter
sdk
:
flutter
...
...
windows/flutter/generated_plugin_registrant.cc
View file @
5bbe2a21
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
#include <cloud_firestore/cloud_firestore_plugin_c_api.h>
#include <cloud_firestore/cloud_firestore_plugin_c_api.h>
#include <firebase_core/firebase_core_plugin_c_api.h>
#include <firebase_core/firebase_core_plugin_c_api.h>
#include <flutter_tts/flutter_tts_plugin.h>
#include <flutter_tts/flutter_tts_plugin.h>
#include <permission_handler_windows/permission_handler_windows_plugin.h>
void
RegisterPlugins
(
flutter
::
PluginRegistry
*
registry
)
{
void
RegisterPlugins
(
flutter
::
PluginRegistry
*
registry
)
{
CloudFirestorePluginCApiRegisterWithRegistrar
(
CloudFirestorePluginCApiRegisterWithRegistrar
(
...
@@ -17,4 +18,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
...
@@ -17,4 +18,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry
->
GetRegistrarForPlugin
(
"FirebaseCorePluginCApi"
));
registry
->
GetRegistrarForPlugin
(
"FirebaseCorePluginCApi"
));
FlutterTtsPluginRegisterWithRegistrar
(
FlutterTtsPluginRegisterWithRegistrar
(
registry
->
GetRegistrarForPlugin
(
"FlutterTtsPlugin"
));
registry
->
GetRegistrarForPlugin
(
"FlutterTtsPlugin"
));
PermissionHandlerWindowsPluginRegisterWithRegistrar
(
registry
->
GetRegistrarForPlugin
(
"PermissionHandlerWindowsPlugin"
));
}
}
windows/flutter/generated_plugins.cmake
View file @
5bbe2a21
...
@@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
...
@@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST
cloud_firestore
cloud_firestore
firebase_core
firebase_core
flutter_tts
flutter_tts
permission_handler_windows
)
)
list
(
APPEND FLUTTER_FFI_PLUGIN_LIST
list
(
APPEND FLUTTER_FFI_PLUGIN_LIST
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment