phinx_provider_package 0.1.3 copy "phinx_provider_package: ^0.1.3" to clipboard
phinx_provider_package: ^0.1.3 copied to clipboard

A Flutter package for managing state using Provider with singleton access and service state management.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:phinx_provider_package/provider/linked_provider.dart';
import 'package:phinx_provider_package/widget/linked_providers.dart';
import 'package:phinx_provider_package/widget/linked_widget.dart';
import 'package:provider/provider.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: HomeScreen(),
    );
  }
}

class CounterProvider extends ChangeNotifier {
  int _count = 0;

  int get count => _count;

  void increment() {
    _count++;
    notifyListeners();
  }
}

class OtherProvider extends ChangeNotifier {
  int _count = 0;

  int get count => _count;

  void increment() {
    _count++;
    notifyListeners();
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Modal & Counter Example'),
      ),
      body: LinkedProviders(
        providers: [
          LinkedProvider(
            create: (_) => OtherProvider(),
            name: "counter",
          ),
          LinkedProvider(
            create: (_) => CounterProvider(),
          )
        ],
        child: const Body(),
      ),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    void showModal(BuildContext context) {
      showDialog(
        context: context,
        builder: (BuildContext context) {
          return const Alerta();
        },
      );
    }

    final provider = Provider.of<CounterProvider>(context);
    // final provider = ProviderManager().get<CounterProvider>(name: "counterProvider");

    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          ElevatedButton(
            child: const Text('Show Modal'),
            onPressed: () => showModal(context),
          ),
          const SizedBox(height: 20),
          Text(
            'Counter: ${provider.count}',
            style: const TextStyle(fontSize: 24),
          ),
          const SizedBox(height: 20),
          ElevatedButton(
            child: const Text('Increment Counter'),
            onPressed: () => provider.increment(),
          ),
          const InSameTree()
        ],
      ),
    );
  }
}

class Alerta extends LinkedWidget {
  const Alerta({
    super.key,
  });

  @override
  Widget build(BuildContext context, Linked linked) {
    final provider = linked.get<CounterProvider>();

    return AlertDialog(
      title: const Text('Modal Title'),
      content: Text('This is the content of the modal. ${provider.count}'),
      actions: <Widget>[
        TextButton(
          child: const Text('Increment'),
          onPressed: () {
            provider.increment();
          },
        ),
        TextButton(
          child: const Text('Close'),
          onPressed: () {
            Navigator.of(context).pop();
          },
        ),
      ],
    );
  }
}

class InSameTree extends LinkedWidget {
  const InSameTree({super.key});

  @override
  Widget build(BuildContext context, Linked linked) {
    final provider = linked.get<CounterProvider>();
    return Column(
      children: [
        const Text("In the same tree using LinkedWidget"),
        Text(provider.count.toString()),
      ],
    );
  }
}
1
likes
130
points
98
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter package for managing state using Provider with singleton access and service state management.

Homepage

Documentation

API reference

License

unknown (license)

Dependencies

flutter, provider

More

Packages that depend on phinx_provider_package