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

retracted

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/src/app_locale.dart';
import 'package:flutter_pro_tools/src/flutter_pro_tools.dart';
import 'package:flutter_pro_tools/src/language_change_provider.dart';
import 'package:flutter_pro_tools/src/responsive_text.dart';
import 'package:flutter_pro_tools/src/socket_connection.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  FlutterProTools.setFirebaseProjectConfig(
      apiKey: 'apiKey',
      appId: 'appId',
      messagingSenderId: 'messagingSenderId',
      projectId: 'projectId');
  if (!kIsWeb) {
    await FlutterProTools.initFlutterNotifications();
  }
  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);

    return Scaffold(
      key: FlutterProTools.snackBarKey,
      appBar: AppBar(title: ResponsiveText(FlutterProTools.translate('Home'))),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            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: () async {
                String? data = await FlutterProTools.getRequest(
                  url: "https://jsonplaceholder.typicode.com/posts/1",
                  response: (data) => data.toString(),
                );
                FlutterProTools.showAlertDialog(
                  title: "GET Request",
                  content: ResponsiveText(
                    data ?? FlutterProTools.translate("No data"),
                  ),
                );
              },
              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 {
                languageState.changeLocale('ar');
              },
              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"),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

class NewPage extends StatelessWidget {
  const NewPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("New Page"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            FlutterProTools.navigationReplace(
              const HomePage(),
            );
          },
          child: const ResponsiveText("Go Back to Home"),
        ),
      ),
    );
  }
}

class LoginPage extends StatefulWidget {
  const LoginPage({super.key});

  @override
  LoginPageState createState() => LoginPageState();
}

class LoginPageState extends State<LoginPage> {
  final TextEditingController _emailController = TextEditingController();
  final TextEditingController _passwordController = TextEditingController();

  void _login() {
    if (FlutterProTools.formKey.currentState!.validate()) {
      FlutterProTools.showLoadingDialog();

      // Simulate a network request
      Future.delayed(const Duration(seconds: 2), () {
        FlutterProTools.dismissLoadingDialog();
        _saveUserData();
        FlutterProTools.showSnackBar(message: "Login Successful");
        FlutterProTools.navigationRemoveAllPreviousPages(
          const HomePage(),
        );
      });
    } else {
      FlutterProTools.showWarningSnackBar(message: 'some field is required');
    }
  }

  void _saveUserData() {
    FlutterProTools.saveLocalData(key: "email", value: _emailController.text);
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _emailController.text;
    _passwordController.text;
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    _emailController.dispose();
    _passwordController.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: FlutterProTools.snackBarKey,
      appBar: AppBar(
        title: const Text("Login"),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Form(
          key: FlutterProTools.formKey,
          child: Column(
            children: [
              TextFormField(
                controller: _emailController,
                decoration: const InputDecoration(labelText: "Email"),
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return "Please enter your email";
                  }
                  return null;
                },
              ),
              TextFormField(
                controller: _passwordController,
                decoration: const InputDecoration(labelText: "Password"),
                obscureText: true,
                validator: (value) {
                  if (value == null || value.isEmpty) {
                    return "Please enter your password";
                  }
                  return null;
                },
              ),
              const SizedBox(height: 20),
              ElevatedButton(
                onPressed: _login,
                child: const Text("Login"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
2
likes
0
points
268
downloads

Publisher

unverified uploader

Weekly Downloads

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

Repository (GitLab)
View/report issues

License

unknown (license)

Dependencies

firebase_core, firebase_messaging, flutter, flutter_local_notifications, flutter_localizations, flutter_riverpod, fluttertoast, http, image_cropper, image_picker, intl, modal_bottom_sheet, shared_preferences, socket_io_client, url_launcher

More

Packages that depend on flutter_pro_tools