papaya_sdk 0.0.9 copy "papaya_sdk: ^0.0.9" to clipboard
papaya_sdk: ^0.0.9 copied to clipboard

outdated

papaya_sdk.

example/lib/main.dart

import 'package:example/config/client.dart';
import 'package:example/provider/user_provider.dart';
import 'package:example/screens/home/home_screen.dart';
import 'package:example/screens/welcome/welcome_screen.dart';
import 'package:example/services/shared_preferences_service.dart';
import 'package:flutter/material.dart';
import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:example/constants/theme.dart';
import 'package:example/constants/route.dart';
import 'package:provider/provider.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:form_builder_validators/form_builder_validators.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await dotenv.load(fileName: ".env");
  await initHiveForFlutter();
  await sharedPreferenceService.getSharedPreferencesInstance();

  final token = await sharedPreferenceService.token;

  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(
          create: (_) => UserProvider(), // add UserProvider
        ),
      ],
      child: GraphQLProvider(
        client: config.initializeClient(),
        child: MyApp(isLogin: token.isNotEmpty),
      ),
    ),
  );
}

class MyApp extends StatelessWidget {
  MyApp({
    Key? key,
    required this.isLogin,
  }) : super(key: key);

  bool isLogin = false;

  @override
  Widget build(BuildContext context) {
    return Consumer<UserProvider>(
      builder: (context, userProvider, child) {
        return MaterialApp(
          title: 'Example',
          theme: theme(context),
          localizationsDelegates: [
            FormBuilderLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
          ],
          supportedLocales: FormBuilderLocalizations.supportedLocales,
          initialRoute:
              isLogin ? HomeScreen.routerName : WelcomeScreen.routerName,
          routes: routes,
        );
      },
    );
  }
}