flutter_dialer 2.0.0+101 copy "flutter_dialer: ^2.0.0+101" to clipboard
flutter_dialer: ^2.0.0+101 copied to clipboard

PlatformAndroid

Flutter plugin for replacing the default dialer app on Android

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_dialer/flutter_dialer.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Dialer Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool isDefault = false;
  bool canSet = false;
  bool isLoading = true;

  @override
  void initState() {
    super.initState();
    _checkDialerStatus();
  }

  Future<void> _checkDialerStatus() async {
    setState(() {
      isLoading = true;
    });

    try {
      final defaultStatus = await FlutterDialer.isDefaultDialer();
      final canSetStatus = await FlutterDialer.canSetDefaultDialer();
      
      setState(() {
        isDefault = defaultStatus;
        canSet = canSetStatus;
        isLoading = false;
      });
    } catch (e) {
      setState(() {
        isLoading = false;
      });
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error checking dialer status: $e')),
      );
    }
  }

  Future<void> _setDefaultDialer() async {
    try {
      final success = await FlutterDialer.setDefaultDialer();
      if (success) {
        await _checkDialerStatus();
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text('Default dialer set successfully'),
            backgroundColor: Colors.green,
          ),
        );
      } else {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(
            content: Text('Failed to set default dialer'),
            backgroundColor: Colors.red,
          ),
        );
      }
    } catch (e) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Error setting default dialer: $e'),
          backgroundColor: Colors.red,
        ),
      );
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Dialer Example'),
        actions: [
          IconButton(
            icon: Icon(Icons.refresh),
            onPressed: _checkDialerStatus,
          ),
        ],
      ),
      body: isLoading
          ? Center(child: CircularProgressIndicator())
          : Padding(
              padding: EdgeInsets.all(16.0),
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: <Widget>[
                  Card(
                    child: Padding(
                      padding: EdgeInsets.all(16.0),
                      child: Column(
                        children: [
                          Icon(
                            isDefault ? Icons.phone_android : Icons.phone_iphone,
                            size: 48,
                            color: isDefault ? Colors.green : Colors.grey,
                          ),
                          SizedBox(height: 16),
                          Text(
                            'Default Dialer Status',
                            style: Theme.of(context).textTheme.titleLarge,
                          ),
                          SizedBox(height: 8),
                          Text(
                            isDefault ? 'This app is the default dialer' : 'This app is NOT the default dialer',
                            style: Theme.of(context).textTheme.bodyLarge,
                            textAlign: TextAlign.center,
                          ),
                        ],
                      ),
                    ),
                  ),
                  SizedBox(height: 16),
                  Card(
                    child: Padding(
                      padding: EdgeInsets.all(16.0),
                      child: Column(
                        children: [
                          Icon(
                            canSet ? Icons.settings : Icons.block,
                            size: 48,
                            color: canSet ? Colors.blue : Colors.grey,
                          ),
                          SizedBox(height: 16),
                          Text(
                            'Can Set as Default',
                            style: Theme.of(context).textTheme.titleLarge,
                          ),
                          SizedBox(height: 8),
                          Text(
                            canSet ? 'This app can be set as default dialer' : 'This app cannot be set as default dialer',
                            style: Theme.of(context).textTheme.bodyLarge,
                            textAlign: TextAlign.center,
                          ),
                        ],
                      ),
                    ),
                  ),
                  SizedBox(height: 32),
                  if (canSet)
                    ElevatedButton(
                      onPressed: _setDefaultDialer,
                      style: ElevatedButton.styleFrom(
                        padding: EdgeInsets.symmetric(vertical: 16),
                      ),
                      child: Text(
                        'Set as Default Dialer',
                        style: TextStyle(fontSize: 18),
                      ),
                    ),
                  SizedBox(height: 16),
                  Text(
                    'Note: Setting as default dialer will open the system settings dialog.',
                    style: Theme.of(context).textTheme.bodySmall,
                    textAlign: TextAlign.center,
                  ),
                ],
              ),
            ),
    );
  }
}
1
likes
150
points
0
downloads

Publisher

verified publishergost.nativemind.ru

Weekly Downloads

Flutter plugin for replacing the default dialer app on Android

Homepage

Documentation

API reference

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_dialer

Packages that implement flutter_dialer