mail_to_native 0.7.2 copy "mail_to_native: ^0.7.2" to clipboard
mail_to_native: ^0.7.2 copied to clipboard

Pick an installed mail app and open its compose screen with subject and body prefilled.

example/lib/main.dart

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

void main() => runApp(const ExampleApp());

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

  @override
  Widget build(BuildContext context) =>
      const MaterialApp(home: ExamplePage());
}

class ExamplePage extends StatefulWidget {
  const ExamplePage({super.key});

  @override
  State<ExamplePage> createState() => _ExamplePageState();
}

class _ExamplePageState extends State<ExamplePage> {
  static const _message = MailMessage(
    subject: 'mail_to',
    body: 'Composed straight from the example app.',
  );

  List<MailApp> _apps = const [];
  String _status = '';

  Future<void> _refresh() async {
    final apps = await MailTo.installedApps();
    setState(() {
      _apps = apps;
      _status = apps.isEmpty ? 'No mail app installed' : '';
    });
  }

  Future<void> _pickAndCompose() async {
    final isComposed = await MailTo.pickAndCompose(_message);
    setState(() => _status = isComposed ? 'Composer opened' : 'Cancelled');
  }

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('mail_to')),
      body: ListView(
        children: [
          ListTile(
            title: const Text('Pick a mail app (native dialog)'),
            subtitle: Text(_status),
            trailing: const Icon(Icons.mail_outline),
            onTap: _pickAndCompose,
          ),
          const Divider(),
          for (final app in _apps)
            ListTile(
              title: Text(app.name),
              subtitle: Text(app.id),
              trailing: app.usesNativeComposer
                  ? const Icon(Icons.phone_iphone)
                  : const Icon(Icons.open_in_new),
              onTap: () => MailTo.compose(_message, app: app),
            ),
        ],
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _refresh,
        child: const Icon(Icons.refresh),
      ),
    );
  }
}
3
likes
0
points
217
downloads

Publisher

verified publisherraffazatyan.dev

Weekly Downloads

Pick an installed mail app and open its compose screen with subject and body prefilled.

Repository (GitHub)
View/report issues

Topics

#email #mailto #mail #compose #ios

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on mail_to_native

Packages that implement mail_to_native