cv_native_client 1.0.0 copy "cv_native_client: ^1.0.0" to clipboard
cv_native_client: ^1.0.0 copied to clipboard

Native client to access platform specific features like clipboard, platform version, etc.

example/lib/main.dart

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

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

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<String> logs = <String>[];
  @override
  void initState() {
    super.initState();
    logs = <String>[];
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('CV Native Client Example App'),
        ),
        body: Center(
          child: Column(
            children: <Widget>[
              // gap
              const SizedBox(height: 16),
              Wrap(
                runSpacing: 8.0,
                children: buttons,
              ),
              // gap
              const SizedBox(height: 16),
              // logs
              const Text('Logs:'),
              Expanded(
                child: Container(
                  padding: const EdgeInsets.all(8.0),
                  child: Container(
                    // rest of the space
                    decoration: BoxDecoration(
                      border: Border.all(color: Colors.grey),
                    ),
                    child: ListView.builder(
                      padding: const EdgeInsets.all(8),
                      itemCount: logs.length,
                      itemBuilder: (BuildContext context, int index) {
                        return Text(logs[(logs.length - 1) - index]);
                      },
                    ),
                  ),
                ),
              )
            ],
          ),
        ),
      ),
    );
  }

  List<Widget> get buttons {
    return <Widget>[
      ElevatedButton(
        onPressed: () async {
          final List<CvClipboardMimeType> mimeTypes = await CvNativeClient.getClipboardDataMimeTypes();
          logs.add('');
          logs.add('${DateTime.now()}: Clipboard mime types: $mimeTypes');
          setState(() {});
        },
        child: const Text('Get clipboard mime types'),
      ),
      // gap
      const SizedBox(width: 16),
      ElevatedButton(
        onPressed: () async {
          final CvClipboardData? clipboardData = await CvNativeClient.getClipboardData();
          logs.add('');
          logs.add('plainText: ${clipboardData?.plainText}');
          logs.add('htmlText: ${clipboardData?.htmlText}');
          logs.add('${DateTime.now()}: Clipboard data:');
          setState(() {});
        },
        child: const Text('Get clipboard text'),
      ),
      // gap
      const SizedBox(width: 16),
      ElevatedButton(
        onPressed: () async {
          const CvClipboardData data = CvClipboardData(
            plainText: 'Hello, world!',
            htmlText: '<p>Hello, world!</p>',
          );
          final bool result = await CvNativeClient.setClipboardData(data);
          logs.add('');
          logs.add('${DateTime.now()}: Clipboard set: $result');
          setState(() {});
        },
        child: const Text('Set "Hello, world!" to clipboard'),
      ),
      // gap
      const SizedBox(width: 16),
      // clear logs
      ElevatedButton(
        onPressed: () {
          logs.clear();
          setState(() {});
        },
        child: const Text('Clear logs'),
      ),
    ];
  }
}
2
likes
140
points
24
downloads

Publisher

verified publishercodevedas.com

Weekly Downloads

Native client to access platform specific features like clipboard, platform version, etc.

Repository (GitHub)
View/report issues

Topics

#clipboard

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, flutter_web_plugins, js, plugin_platform_interface

More

Packages that depend on cv_native_client