profscode_crud 1.0.1 copy "profscode_crud: ^1.0.1" to clipboard
profscode_crud: ^1.0.1 copied to clipboard

A simple GetX-based CRUD helper for HTTP requests.

example/profscode_crud_example.dart

import 'package:flutter/material.dart';
import 'package:profscode_crud/profscode_crud.dart';
import 'package:ionicons/ionicons.dart';

void main() {
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      themeMode: ThemeMode.dark,
      darkTheme: ThemeData(
        brightness: Brightness.dark,
        scaffoldBackgroundColor: const Color(0xFF0D0D0F),
        colorScheme: const ColorScheme.dark(
          primary: Color(0xFF4F46E5),
          secondary: Color(0xFF9333EA),
        ),
        appBarTheme: const AppBarTheme(
          backgroundColor: Color(0xFF111113),
          elevation: 0,
        ),
        cardTheme: CardThemeData(
          color: const Color(0xFF1A1B1E),
          elevation: 4,
          shadowColor: Colors.black54,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(16),
          ),
        ),
      ),
      home: const CrudExamplePage(),
    );
  }
}

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

  @override
  State<CrudExamplePage> createState() => _CrudExamplePageState();
}

class _CrudExamplePageState extends State<CrudExamplePage> {
  late Crud crud;
  String resultText = 'Press a button to make a request';

  @override
  void initState() {
    super.initState();

    crud = Crud(
      headersProvider: () => {
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
        'Content-Type': 'application/json',
      },
      onRefreshToken: () async {
        await Future.delayed(const Duration(seconds: 1));
        return true;
      },
    );
  }

  Future<void> _getUsers() async {
    final response = await crud.getRequest(
      'https://jsonplaceholder.typicode.com/users',
    );
    setState(() => resultText = 'GET Response: $response');
  }

  Future<void> _postUser() async {
    final data = {'name': 'John Doe', 'email': '[email protected]'};
    final response = await crud.postRequest(
      'https://jsonplaceholder.typicode.com/users',
      data,
    );
    setState(() => resultText = 'POST Response: $response');
  }

  Future<void> _putUser() async {
    final data = {'name': 'Jane Doe'};
    final response = await crud.putRequest(
      'https://jsonplaceholder.typicode.com/users/1',
      data,
    );
    setState(() => resultText = 'PUT Response: $response');
  }

  Future<void> _patchUser() async {
    final data = {'email': '[email protected]'};
    final response = await crud.patchRequest(
      'https://jsonplaceholder.typicode.com/users/1',
      data,
    );
    setState(() => resultText = 'PATCH Response: $response');
  }

  Future<void> _deleteUser() async {
    final response = await crud.deleteRequest(
      'https://jsonplaceholder.typicode.com/users/1',
    );
    setState(() => resultText = 'DELETE Response: $response');
  }

  Future<void> _headRequest() async {
    final response = await crud.headRequest(
      'https://jsonplaceholder.typicode.com/users',
    );
    setState(() => resultText = 'HEAD Response: $response');
  }

  Future<void> _optionsRequest() async {
    final response = await crud.optionsRequest(
      'https://jsonplaceholder.typicode.com/users',
    );
    setState(() => resultText = 'OPTIONS Response: $response');
  }

  Future<void> _uploadFile() async {
    final response = await crud.fileRequest(
      'https://example.com/upload',
      fields: {},
      files: [],
    );
    setState(() => resultText = 'UPLOAD Response: $response');
  }

  Widget actionButton(String label, IconData icon, VoidCallback onTap) {
    return Card(
      child: InkWell(
        borderRadius: BorderRadius.circular(16),
        onTap: onTap,
        child: Padding(
          padding: const EdgeInsets.symmetric(vertical: 18, horizontal: 20),
          child: Row(
            children: [
              Icon(icon, size: 26, color: Colors.white),
              const SizedBox(width: 16),
              Text(label, style: const TextStyle(fontSize: 18)),
            ],
          ),
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Profscode CRUD Example'),
        centerTitle: true,
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            actionButton('GET Users', Ionicons.download_outline, _getUsers),
            actionButton('POST User', Ionicons.add_circle_outline, _postUser),
            actionButton('PUT User', Ionicons.reload_outline, _putUser),
            actionButton('PATCH User', Ionicons.build_outline, _patchUser),
            actionButton(
              'DELETE User',
              Ionicons.trash_bin_outline,
              _deleteUser,
            ),
            actionButton('HEAD Request', Ionicons.eye_outline, _headRequest),
            actionButton(
              'OPTIONS Request',
              Ionicons.help_circle_outline,
              _optionsRequest,
            ),
            actionButton(
              'UPLOAD File',
              Ionicons.cloud_upload_outline,
              _uploadFile,
            ),
            const SizedBox(height: 20),
            Expanded(child: SingleChildScrollView(child: Text(resultText))),
            const SizedBox(height: 20),
            const Divider(height: 30, color: Colors.white30),
            const Text(
              'For questions or suggestions:',
              style: TextStyle(fontSize: 14, color: Colors.white54),
            ),
            const SizedBox(height: 10),
            const Text(
              'Website: http://ahmedhafiz.com.tr',
              style: TextStyle(fontSize: 14, color: Colors.white70),
            ),
            const SizedBox(height: 6),
            const Text(
              'Instagram: @ahmedhafiz.33',
              style: TextStyle(fontSize: 14, color: Colors.white70),
            ),
            const Text(
              'GitHub: github.com/Ahmedhafiz33',
              style: TextStyle(fontSize: 14, color: Colors.white70),
            ),
          ],
        ),
      ),
    );
  }
}
5
likes
150
points
271
downloads

Publisher

unverified uploader

Weekly Downloads

A simple GetX-based CRUD helper for HTTP requests.

Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, get, http, ionicons, path

More

Packages that depend on profscode_crud