• 跳转首页结构并且加载launch插件


    home 代码:

    import 'package:flutter/material.dart';
    import 'package:flutter_project/service/service_method.dart';
    import 'dart:convert';
    import 'swiper_demo.dart';
    import 'top_navigator.dart';
    import 'adbanner.dart';
    import 'callPhone.dart';
    class HomePage extends StatefulWidget {
    HomePage({Key key}) : super(key: key);

    @override
    _HomePageState createState() => _HomePageState();
    }

    class _HomePageState extends State<HomePage> {
     
    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar(title: Text('百姓生活')),
    body: Container(
    child: FutureBuilder(//网络数据返回能很好的渲染控件
    future: getHomePageContent(),//网络返回的数据
    builder: (context,snapshot){
    if (snapshot.hasData) {//snapshot 相当于返回的数据
    var data = json.decode(snapshot.data.toString());

    List<Map> swiper = (data['data']['slides'] as List).cast();

    List<Map> navlist = (data['data']['category'] as List).cast();

    String adPic = data['data']['advertesPicture']['PICTURE_ADDRESS'];

    String phoneBgImage = data['data']['shopInfo']['leaderImage'];
     
    String phoneNum = data['data']['shopInfo']['leaderPhone'];
    return Column(
    children: <Widget>[//各个组件
    SwiperDiy(swiperDataList: swiper),//轮播
    TopNavigator(navigatorList: navlist),//导航引导
    AdBanner(adPicture: adPic),//广告
    CallPhone(backgroundImage: phoneBgImage,shopPhone:phoneNum,),//打电话
    ],
    );
    }else{
    return Center(
    child: Text('加载错误'),
    );
    }
    },
    ),
    ),
    );
    }
    }
     
    打电话代码:
    import 'package:flutter/material.dart';
    import 'package:url_launcher/url_launcher.dart';//打电话插件 也可以打开网页 邮件
    class CallPhone extends StatelessWidget {

    final String backgroundImage;
    final String shopPhone;
    const CallPhone({Key key,this.backgroundImage,this.shopPhone}) : super(key: key);

    @override
    Widget build(BuildContext context) {
    return Container(
    child: InkWell(//就是oc的手势
    onTap: (){
    _lanchURL();
    },
    child: Image.network(backgroundImage),
    ),
    );
    }


    void _lanchURL() async{//需要真机测试
    String url = 'tel:' + shopPhone;
    if (await canLaunch(url)) {
    await launch(url);
     
    }else{
    throw '请检查是否是真机,URL不能访问';
    }
    }
    }
    总结:
     

    //打电话 发邮件 打开网址 使用 url_launcher插件

    Url 格式 https://pub.dev/packages/url_launcher 查看

    if(await canlunch(url)){

    await lunch(url);

    }

     

    InkWell(//类似于OC 的手势

    onTap:(){

     

    }

     

    )






  • 相关阅读:
    Spring集成缓存
    spring配置注解context:annotation-config和context:component-scan区别
    Python新手练手项目
    Spring Boot常用功能
    Java IO NIO详细讲解
    设计模式
    [MacOS]Atom 安装与汉化
    [Nexus3]本地YUM源私有仓安装
    [Docker]安装
    [Linux]LVM扩展卷
  • 原文地址:https://www.cnblogs.com/pp-pping/p/12228200.html
Copyright © 2020-2023  润新知