Provider (Automatic Counter App Timer with periodic) Counter App Example

 import "dart:async";

import "package:firebase/Stateless_Component_UI/Provider/Providers/count_provider.dart";
import "package:flutter/material.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 ChangeNotifierProvider(
create: (context) {
return CountProvider();
},
child: MaterialApp(
title: "Counter App",
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.grey,
),
home: const CountExample(),
),
);
}
}
class CountExample extends StatefulWidget
{
const CountExample({super.key});

@override
State<CountExample> createState() => _CountExampleState();
}

class _CountExampleState extends State<CountExample> {
@override
void initState()
{
super.initState();
Timer.periodic(const Duration(seconds: 1), (timer) {
final countProvider = Provider.of<CountProvider>(context, listen: false);
countProvider.setCount();
},);
}

@override
Widget build(BuildContext context) {
/// By applying listen: false, only Consumer widget will rebuild every time as shown below
/// otherwise build() method will call every time in case of listen: true (by default)
final countProvider = Provider.of<CountProvider>(context, listen: false);
print("Build...${countProvider.count}"); //To check for build() method call
return Scaffold(
appBar: AppBar(
title: const Text("Counter App"),
centerTitle: true,
backgroundColor: Colors.grey,
),
body: Center(
child: Consumer<CountProvider>(
builder: (context, value, child) {
print("Print only this widget builds in Consumer...${value.count}");
/// Here, only below Text() widget will rebuilding...
return Text(value.count.toString(),
style: const TextStyle(fontSize: 50.0),
);
},
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
countProvider.setCount();
},
backgroundColor: Colors.blue,
child: const Icon(Icons.add, color: Colors.white),
),
);
}
}
import "package:flutter/material.dart";

class CountProvider extends ChangeNotifier
{
int _count = 0;
int get count {
return _count;
}

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

Comments

Popular posts from this blog

Second GET API Calling with Bloc simple Example in Flutter

Stack Container Scrollable Card widget UI with Custom Widget

Pagination with Bloc Pattern in Flutter