getsocial_flutter_sdk 7.0.0 getsocial_flutter_sdk: ^7.0.0 copied to clipboard
GetSocial Flutter SDK
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:getsocial_example/invites_sendcustom.dart';
import 'package:getsocial_example/invites_setreferrer.dart';
import 'package:getsocial_example/user_details.dart';
import 'package:getsocial_flutter_sdk/getsocial_flutter_sdk.dart';
import 'package:getsocial_example/base_list.dart';
import 'package:getsocial_example/um.dart';
import 'package:getsocial_example/invites_menu.dart';
import 'common.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return AppState();
}
}
class HomePage extends BaseListView {
HomePage(StateProvider stateProvider) : super(stateProvider);
@override
List<ListButton> get buttons => [
ListButton("User Management",
(context) => Navigator.pushNamed(context, "/um")),
ListButton("Invites",
(context) => Navigator.pushNamed(context, "/invites")),
];
}
class AppState extends State<MyApp> implements StateProvider {
CurrentUser _currentUser;
@override
void initState() {
super.initState();
updateState();
GetSocial.addOnInitializedListener(updateState);
GetSocial.addOnCurrentUserChangedListener((user) => {
setState(() => {_currentUser = user})
});
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> updateState() async {
if (!mounted) return;
CurrentUser user = await GetSocial.currentUser;
setState(() {
_currentUser = user;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
builder: (context, child) {
return Scaffold(
appBar: AppBar(
title: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
GestureDetector(
onTap: () => {
Clipboard.setData(ClipboardData(text: _currentUser.userId))
},
child:
_currentUser?.avatarUrl == null ||
_currentUser.avatarUrl.length == 0
? Image.asset(
"images/avatar_default.png",
width: 50,
height: 50,
)
: Image.network(
_currentUser.avatarUrl,
width: 50,
height: 50,
),
),
SizedBox(width: 20),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
_currentUser?.displayName ?? "Initializing...",
style: TextStyle(fontWeight: FontWeight.bold),
),
Text(_currentUser == null
? ""
: _currentUser.isAnonymous
? "Anonymous"
: _currentUser.identities.entries
.map((e) => e.key + "=" + e.value)
.join(", ")),
],
)
],
),
),
body: child,
);
},
initialRoute: '/',
routes: {
'/': (BuildContext context) => HomePage(this),
'/um': (BuildContext context) => UserManagement(this),
'/um_userdetails': (BuildContext context) => UserDetailsView(_currentUser),
'/invites': (BuildContext context) => InvitesMenu(this),
'/invite_sendcustom': (BuildContext context) => SendCustomInvite(),
'/invite_setreferrer': (BuildContext context) => SetReferrer(),
},
);
}
}