call_log_new 0.0.3
call_log_new: ^0.0.3 copied to clipboard
A Flutter plugin for accessing call logs on Android and iOS platforms.
example/lib/main.dart
import 'package:call_log_new/call_log_new.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Call Log Example',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: CallLogScreen(),
);
}
}
class CallLogScreen extends StatefulWidget {
@override
_CallLogScreenState createState() => _CallLogScreenState();
}
class _CallLogScreenState extends State<CallLogScreen> {
List<Map<String, dynamic>> callLogs = [];
@override
void initState() {
super.initState();
fetchCallLogs();
}
Future<void> fetchCallLogs() async {
// Request permissions
final status = await Permission.phone.request();
if (status.isGranted) {
try {
final logs = await CallLog.fetchCallLogs();
setState(() {
callLogs = logs;
});
} catch (e) {
print("Error fetching call logs: $e");
}
} else {
print("Permission denied");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Call Logs')),
body: callLogs.isEmpty
? const Center(child: Text('No Call Logs'))
: ListView.builder(
itemCount: callLogs.length,
itemBuilder: (context, index) {
final log = callLogs[index];
return ListTile(
title: Text("Number: ${log['number']}"),
subtitle: Text(
"Type: ${log['type']}, Date: ${DateTime.fromMillisecondsSinceEpoch(log['date'])}, Duration: ${log['duration']} seconds",
),
);
},
),
);
}
}