turbo_notifiers 1.1.0 copy "turbo_notifiers: ^1.1.0" to clipboard
turbo_notifiers: ^1.1.0 copied to clipboard

A simple package that copies improves the behaviour of Flutter's ValueNotifier.

example/lib/main.dart

import 'dart:math';

import 'package:turbo_notifiers_example/widgets/example_implementations/turbo_notifier_example.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:turbo_notifiers/turbo_notifiers.dart';
import 'package:turbo_mvvm/turbo_mvvm.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Turbo Notifiers',
      theme: ThemeData(primarySwatch: Colors.red),
      home: const HomeView(),
    );
  }
}

class HomeView extends StatelessWidget {
  const HomeView({super.key});
  static const String route = 'home-view';

  @override
  Widget build(BuildContext context) => TViewModelBuilder<HomeViewModel>(
    builder: (context, model, isInitialised, child) {
      return GestureDetector(
        onTap: model.focusNode.unfocus,
        child: Scaffold(
          appBar: AppBar(title: const Text('Turbo Notifiers Example Project')),
          body: SingleChildScrollView(
            child: Column(
              children: [
                const SizedBox(height: 16),
                TNotifierExample(model: model),
                const SizedBox(height: kBottomNavigationBarHeight),
              ],
            ),
          ),
        ),
      );
    },
    viewModelBuilder: () => HomeViewModel.locate,
  );
}

class HomeViewModel extends TBaseViewModel<Object?> {
  final TNotifier<int> _counter = TNotifier(0);
  ValueListenable<int> get counterListenable => _counter;

  late final random = Random();

  @override
  Future<void> initialise({bool doSetInitialised = true}) async {
    await super.initialise(doSetInitialised: doSetInitialised);
  }

  @override
  void dispose() {
    _counter.dispose();
    super.dispose();
  }

  // -------- TNotifier ---- TNotifier ---- TNotifier -------- \\

  void updateCounter({required int value}) => _counter.update(value);

  void decrementCounter() => _counter.updateCurrent((value) => --value);

  void incrementCounter() => _counter.updateCurrent((value) => ++value);

  /// Provides the current [TurboViewModelBuilderState]'s [FocusNode].
  FocusNode get focusNode => FocusScope.of(context!);

  TextStyle get exampleTitleStyle => Theme.of(
    context!,
  ).textTheme.bodyMedium!.copyWith(fontSize: 20, fontWeight: FontWeight.bold);

  static HomeViewModel get locate => HomeViewModel();
}
0
likes
160
points
192
downloads

Publisher

verified publisherultrawideturbodev.com

Weekly Downloads

A simple package that copies improves the behaviour of Flutter's ValueNotifier.

Homepage
Repository (GitHub)
View/report issues

Topics

#state-management #value-notifier #flutter

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on turbo_notifiers