Provider Counter App
Folders
learn
main.dart
import 'dart:ui';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:sarthak_flutter_portfolio_try/learn_provider/providers/counter_provider.dart';
import 'home.dart';
import 'learn_provider.dart';
void main() {
runApp(const MyApp());
}
class MyCustomScrollBehavior extends CupertinoScrollBehavior {
/// if its `MaterialApp` then use `MaterialScrollBehavior`
const MyCustomScrollBehavior();
Set<PointerDeviceKind> get dragDevices => {
PointerDeviceKind.mouse,
}..addAll(super.dragDevices);
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider<CounterProvider>(
create: (context) => CounterProvider(),
),
],
child: CupertinoApp(
debugShowCheckedModeBanner: false,
scrollBehavior: const MyCustomScrollBehavior(),
// home: Home(),
home: LearnProvider(),
),
);
}
}
models/counter_model.dart
import 'package:equatable/equatable.dart';
class CounterModel extends Equatable {
int x = 0;
int get increment => ++x;
int get decrement => --x;
List<Object?> get props => [x];
}
providers/counter_provider.dart
import 'package:flutter/cupertino.dart';
import 'package:sarthak_flutter_portfolio_try/learn_provider/models/counter_model.dart';
class CounterProvider with ChangeNotifier {
CounterModel _obj = CounterModel();
int get x => _obj.x;
void inc() {
_obj.increment;
notifyListeners();
}
void dec() {
_obj.decrement;
notifyListeners();
}
}
learn_provider.dart
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:sarthak_flutter_portfolio_try/learn_provider/providers/counter_provider.dart';
class LearnProvider extends StatelessWidget {
const LearnProvider({super.key});
Widget build(BuildContext context) {
return CupertinoPageScaffold(
child: Center(
child: Column(
children: [
Consumer<CounterProvider>(
builder: (context, counter, child) {
return Text('${counter.x}');
},
),
ElevatedButton(
onPressed: () {
// var counter = context.read<CounterProvider>();
var counter =
Provider.of<CounterProvider>(context, listen: false);
counter.inc();
},
child: const Icon(Icons.add),
),
ElevatedButton(
onPressed: () {
// var counter = context.read<CounterProvider>();
var counter =
Provider.of<CounterProvider>(context, listen: false);
counter.dec();
},
child: const Icon(Icons.minor_crash_outlined),
),
],
),
),
);
}
}