flutter呼び出しシステムの電話、メール、メール機能


紹介する
アンドロイドのようにintent-actionを設定します.ボタンをクリックすると、システムのダイヤル、メール、メールなどのインタフェースにジャンプできます.効果図:
クラスライブラリの導入
url_launcher: ^5.0.3
get_it: ^1.0.3+2

次の図に示すように、プロファイルpubspec.yamlには2つのクラスライブラリが導入されています.
サービスの作成
TelAndSmsService.dart
import 'package:url_launcher/url_launcher.dart';

class TelAndSmsService {

  void call(String number) => launch("tel:$number");
  void sendSms(String number) => launch("sms:$number");
  void sendEmail(String email) => launch("mailto:$email");
}

登録サービスのツールクラスを作成する
ServiceLocator.dart
import 'package:get_it/get_it.dart';
import './TelAndSmsService.dart';

GetIt locator = GetIt();
void setupLocator() {
  locator.registerSingleton(TelAndSmsService());
}

メインエントリ呼び出しの適用
main.dart
import 'package:flutter/material.dart';
import './view_sample.dart';
import 'ServiceLocator.dart';
void main()  {
//     
setupLocator();
//      
runApp(ViewSample());
}


呼び出し電話、メール、メール
view_sample.dart
import 'package:flutter/material.dart';
import 'ServiceLocator.dart';
import 'TelAndSmsService.dart';

class   ViewSample extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      title: 'view add or remove',
      theme: ThemeData(
        primaryColor: Colors.green,
      ),
      home: ViewPage(),
    );
  }
}

class ViewPage extends StatefulWidget{
  @override
  ViewPageState createState() => ViewPageState();

}
class ViewPageState extends State{
  bool toggle = true;
  final TelAndSmsService _service = locator();
  final String number = "123456789";
  final String email = "[email protected]";
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text('view page'),
      ),
      body: Container(
        child: Column(
          children: [
            RaisedButton(
              child: Text("   "),
              onPressed: ()=> _service.call(number)
              ,
            ),
            RaisedButton(
              child: Text("   "),
              onPressed: ()=> _service.sendSms(number)
            ),
            RaisedButton(
              child: Text("   "),
                onPressed: ()=> _service.sendEmail(email)
            ),
          ],
        ),
      ),
    );
  }
  


}