Flutter 调用系统功能

1、 调用系统的打电话、发短信、发邮件功能

1.1 pubspec.yaml 文件中添加 url_launcherget_it 两个插件
    url_launcher: ^5.5.0
    get_it: ^4.0.4
1.2 封装公共的 创建电话、短信、邮件服务(我是在公共文件 utils.dart 中封装的)
    import 'package:url_launcher/url_launcher.dart';
    import 'package:get_it/get_it.dart';
    
    /*
    * @description: 创建电话、短信、邮件服务
    */ 
    class TelAndSmsService {
        /*
        * @description:  打电话
        * @param {type} 
        * number 电话号码
        */
        void call(String number) => launch("tel:$number");
        /*
        * @description:  发短信
        * @param {type}
        * number 电话号码
        */
        void sendSms(String number) => launch("sms:$number");
        /*
        * @description:  发邮件
        * @param {type}
        * email 邮箱
        */
        void sendEmail(String email) => launch("mailto:$email");
    }

    class GetItClass {
        final locator = GetIt.instance;
        void setupLocator() {
            locator.registerSingleton(TelAndSmsService());
        }
    }
1.3 应用主入口注册服务
    import './utils/utils.dart';

    void main(){
        // 注册封装的服务
        GetItClass().setupLocator();
        runApp(new MyApp());
    }
1.4 相应的页面调用打电话、发短信、发邮件服务
    // 引入依赖包
    import 'package:flutter/material.dart';
    import 'package:new_flutter/utils/utils.dart';

    class PhoneSms extends StatelessWidget {
        final TelAndSmsService _service = GetItClass().locator();
        final String number = "19956647149";
        final String email = "[email protected]";
        @override
        Widget build(BuildContext context) {
            return  MaterialApp(
                home: new Scaffold(
                    appBar: new AppBar(
                        title: new Text('page Two'),
                    ),
                    body: Container(
                        width: MediaQuery.of(context).size.width,
                        height: MediaQuery.of(context).size.height,
                        child: Column(
                            children: [
                            RaisedButton(
                                child: Text("打电话"),
                                onPressed: ()=> _service.call(number)
                            ),
                            RaisedButton(
                                child: Text("发短信"),
                                onPressed: ()=> _service.sendSms(number)
                            ),
                            RaisedButton(
                                child: Text("发邮件"),
                                onPressed: ()=> _service.sendEmail(email)
                            )
                            ]
                        )
                    )
                ),
            );
        }
    }

2、 调用系统的复制剪切板功能

2.1 引入依赖包
    import 'package:flutter/material.dart';
2.2 复制文本到剪切板
    RaisedButton(
        child: Text("复制剪切板"),
        onPressed: (){
            // 复制文本到剪切板方法
            Clipboard.setData(ClipboardData(text: 'test-复制剪切板文案'));
        }
    )
2.3 从剪切板读取文本
    Clipboard.getData(Clipboard.kTextPlain).then((value) => {
        // value.text  即为复制到剪切板的内容
        print('111:${value.text}')
    });

你可能感兴趣的:(Flutter 调用系统功能)