getsocial_flutter_sdk 7.0.0 copy "getsocial_flutter_sdk: ^7.0.0" to clipboard
getsocial_flutter_sdk: ^7.0.0 copied to clipboard

outdated

GetSocial Flutter SDK

example/lib/main.dart

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(),
      },
    );
  }
}