add android example

This commit is contained in:
Salvatore Giordano
2020-03-17 12:11:03 +01:00
parent 7b27322e85
commit af16d90789
8 changed files with 54 additions and 9 deletions
+1
View File
@@ -60,3 +60,4 @@ doc/api/
*.js.map *.js.map
fvm fvm
google-services.json
+3
View File
@@ -64,4 +64,7 @@ dependencies {
testImplementation 'junit:junit:4.12' testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1' androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'com.google.firebase:firebase-messaging:20.1.2'
} }
apply plugin: 'com.google.gms.google-services'
@@ -7,7 +7,7 @@
FlutterApplication and put your custom class here. --> FlutterApplication and put your custom class here. -->
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<application <application
android:name="io.flutter.app.FlutterApplication" android:name=".Application"
android:label="example" android:label="example"
android:icon="@mipmap/ic_launcher"> android:icon="@mipmap/ic_launcher">
<activity <activity
@@ -17,6 +17,10 @@
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<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"/>
@@ -0,0 +1,22 @@
package com.example.example
import io.flutter.app.FlutterApplication
import io.flutter.plugin.common.PluginRegistry
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin
class Application : FlutterApplication(), PluginRegistrantCallback {
override fun onCreate() {
super.onCreate()
FlutterFirebaseMessagingService.setPluginRegistrant(this)
}
override fun registerWith(registry: PluginRegistry?) {
SharedPreferencesPlugin.registerWith(registry?.registrarFor(
"io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"));
FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"))
}
}
+1
View File
@@ -8,6 +8,7 @@ buildscript {
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.5.0' classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.2'
} }
} }
+2 -3
View File
@@ -5,12 +5,11 @@ void main() async {
final client = Client( final client = Client(
's2dxdhpxd94g', 's2dxdhpxd94g',
logLevel: Level.INFO, logLevel: Level.INFO,
persistenceEnabled: false,
); );
await client.setUser( await client.setUser(
User(id: 'super-band-9'), User(id: 'super-band-007'),
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoic3VwZXItYmFuZC05In0.0L6lGoeLwkz0aZRUcpZKsvaXtNEDHBcezVTZ0oPq40A', 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoic3VwZXItYmFuZC0wMDcifQ.DlbyHN6nK7jBTJDp6RJOuBJWwnYoy8Zq8208RPL4uLY',
); );
runApp(MyApp(client)); runApp(MyApp(client));
+1 -1
View File
@@ -116,7 +116,7 @@ class _ChannelListViewState extends State<ChannelListView> {
child: StreamBuilder<List<Channel>>( child: StreamBuilder<List<Channel>>(
stream: streamChat.channelsStream, stream: streamChat.channelsStream,
builder: (context, snapshot) { builder: (context, snapshot) {
if (snapshot.hasError) { if (false && snapshot.hasError) {
if (snapshot.error is Error) { if (snapshot.error is Error) {
print((snapshot.error as Error).stackTrace); print((snapshot.error as Error).stackTrace);
} }
+18 -3
View File
@@ -59,7 +59,7 @@ class StreamChat extends StatefulWidget {
} }
} }
class StreamChatState extends State<StreamChat> { class StreamChatState extends State<StreamChat> with WidgetsBindingObserver {
final List<StreamSubscription> _subscriptions = []; final List<StreamSubscription> _subscriptions = [];
Client get client => widget.client; Client get client => widget.client;
final GlobalKey<NavigatorState> _navigatorKey = GlobalKey<NavigatorState>(); final GlobalKey<NavigatorState> _navigatorKey = GlobalKey<NavigatorState>();
@@ -212,8 +212,22 @@ class StreamChatState extends State<StreamChat> {
_queryChannelsLoadingController.sink.add(false); _queryChannelsLoadingController.sink.add(false);
} catch (err, stackTrace) { } catch (err, stackTrace) {
_queryChannelsLoadingController.addError(err, stackTrace); _queryChannelsLoadingController.addError(err, stackTrace);
} finally { }
// _queryChannelsLoadingController.sink.add(false); }
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
print('NEW STATE $state');
if (state == AppLifecycleState.paused) {
client.disconnect();
} else if (state == AppLifecycleState.resumed) {
client.connect();
} }
} }
@@ -221,6 +235,7 @@ class StreamChatState extends State<StreamChat> {
void dispose() { void dispose() {
_subscriptions.forEach((s) => s.cancel()); _subscriptions.forEach((s) => s.cancel());
_queryChannelsLoadingController.close(); _queryChannelsLoadingController.close();
WidgetsBinding.instance.removeObserver(this);
super.dispose(); super.dispose();
} }
} }