zoukankan      html  css  js  c++  java
  • 跳转首页结构并且加载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:(){

     

    }

     

    )






  • 相关阅读:
    luogu P1877 [HAOI2012]音量调节
    luogu P1510 精卫填海
    luogu P1508 Likecloud-吃、吃、吃
    我的VIM
    luogu P1310 表达式的值
    luogu P1402 酒店之王
    luogu P3119 [USACO15JAN]草鉴定Grass Cownoisseur
    luogu P1879 [USACO06NOV]玉米田Corn Fields
    luogu P2746 [USACO5.3]校园网Network of Schools
    [BZOJ4870][六省联考2017]组合数问题(组合数动规)
  • 原文地址:https://www.cnblogs.com/pp-pping/p/12228200.html
Copyright © 2011-2022 走看看