flutter_pro_tools 2.2.2 copy "flutter_pro_tools: ^2.2.2" to clipboard
flutter_pro_tools: ^2.2.2 copied to clipboard

is a Flutter package that provides a collection of utilities and tools to help streamline your development process.

example/lib/main.dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_pro_tools/flutter_pro_tools.dart';
import 'package:flutter_pro_tools_example/login_page.dart';
import 'package:flutter_pro_tools_example/model_page.dart';
import 'package:flutter_pro_tools_example/new_page.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await FlutterProTools.setFirebaseProjectConfig(
      apiKey: 'apiKey',
      appId: 'appId',
      messagingSenderId: 'messagingSenderId',
      projectId: 'projectId');
  if (!kIsWeb) {
    await FlutterProTools.initFlutterNotifications();
    FlutterProTools.firebaseMessaging(function: (message) {
      FlutterProTools.logFile(message: message.payload!);
    });
  }
  await FlutterProTools.setPortraitDevice();
  runApp(
    const ProviderScope(
      child: MyApp(),
    ),
  );
}

class MyApp extends ConsumerWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context, WidgetRef ref) {
    var state = ref.watch(languageStatus);
    return MaterialApp(
      navigatorKey: FlutterProTools.navigatorKey,
      scaffoldMessengerKey: FlutterProTools.snackBarKey,
      title: 'App name',
      home: const HomePage(),
      locale: state.locale,
      supportedLocales: AppLocale.supportedLocale(),
      localeResolutionCallback: AppLocale.localeResolutionCallback,
      localizationsDelegates: AppLocale.localizationsDelegates(),
    );
  }
}

class HomePage extends ConsumerWidget {
  const HomePage({super.key});

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    ref.watch(languageStatus);
    var languageState = ref.read(languageStatus.notifier);
    SocketConnection.initConnection(socketURL: 'socketURL');
    FlutterProTools.checkForUpdate(appVersion: "2.3.0");
    return Scaffold(
      appBar: AppBar(title: ResponsiveText(FlutterProTools.translate('home'))),
      body: Center(
        child: SingleChildScrollView(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () {
                  FlutterProTools.showNotification(
                      title: "hello title",
                      body: "hello body",
                      otherData: {
                        "title": "payload title",
                        "body": "payload body",
                      },
                      function: (data) {
                        FlutterProTools.logFile(message: data.payload!);
                      });
                },
                child: ResponsiveText(
                  FlutterProTools.translate("display_notification"),
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  FlutterProTools.logFile(
                      message: FlutterProTools.getCurrentLanguage);
                },
                child: ResponsiveText(
                  FlutterProTools.translate("get_current_language"),
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  FlutterProTools.showBarModal(
                    page: const ModelPage(),
                    enableDrag: true,
                    isDismissible: true,
                  );
                },
                child: ResponsiveText(
                  FlutterProTools.translate("open_bar_model"),
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  FlutterProTools.showMaterialModel(
                    const ModelPage(),
                  );
                },
                child: ResponsiveText(
                  FlutterProTools.translate("open_material_model"),
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  SocketConnection.get(
                    event: 'event',
                    function: (data) {
                      FlutterProTools.logFile(message: "$data");
                    },
                  );
                  SocketConnection.post(
                    event: 'event',
                    data: {"name": "my name"},
                  );
                },
                child: ResponsiveText(
                  FlutterProTools.translate("send_data_to_socket"),
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  SocketConnection.withAck(
                    event: 'event',
                    data: {"name": "my name"},
                    function: (data) {
                      FlutterProTools.logFile(
                          message: data.toString(), name: 'my socket log');
                    },
                  );
                },
                child: ResponsiveText(
                  FlutterProTools.translate("send_ack_data_to_socket"),
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  FlutterProTools.navigationPush(
                    const NewPage(),
                  );
                },
                child: ResponsiveText(
                  FlutterProTools.translate("navigate_to_new_page"),
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  FlutterProTools.showLoadingDialog();
                  Future.delayed(const Duration(seconds: 2), () {
                    FlutterProTools.dismissLoadingDialog();
                    FlutterProTools.showSnackBar(
                      message: FlutterProTools.translate("loading_completed"),
                    );
                  });
                },
                child: ResponsiveText(
                  FlutterProTools.translate("show_loading_dialog"),
                ),
              ),
              ElevatedButton(
                onPressed: () {
                  FlutterProTools.getRequest(
                    url: "https://jsonplaceholder.typicode.com/posts/1",
                    response: (data) => FlutterProTools.showAlertDialog(
                      title: "GET Request",
                      content: ResponsiveText(
                        data.body,
                      ),
                    ),
                  );
                },
                child: ResponsiveText(
                  FlutterProTools.translate("perform_get_request"),
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  await FlutterProTools.saveLocalData(
                      key: "username", value: "JohnDoe");
                  String? username =
                      await FlutterProTools.getLocalData(key: "username");
                  FlutterProTools.showAlertDialog(
                    title: "Local Storage",
                    content: ResponsiveText(
                      "${FlutterProTools.translate("saved_username")}: $username",
                    ),
                  );
                },
                child: ResponsiveText(
                  FlutterProTools.translate("save_and_retrieve_local_data"),
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  ref.watch(languageStatus).locale.languageCode == "en"
                      ? languageState.changeLanguage('ar')
                      : languageState.changeLanguage('en');
                },
                child: ResponsiveText(
                  FlutterProTools.translate("change_language"),
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  FlutterProTools.navigationPush(const LoginPage());
                },
                child: ResponsiveText(
                  FlutterProTools.translate("go_to_login_page"),
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  FlutterProTools.removeLocalData(key: 'username');
                },
                child: ResponsiveText(
                  FlutterProTools.translate("remove_local_data"),
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  FlutterProTools.cameraCapture();
                },
                child: ResponsiveText(
                  FlutterProTools.translate("open_camera"),
                ),
              ),
              ElevatedButton(
                onPressed: () async {
                  FlutterProTools.chooseImage();
                },
                child: ResponsiveText(
                  FlutterProTools.translate("image_picker"),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}