美文网首页
Dart/Flutter基础-函数(方法)

Dart/Flutter基础-函数(方法)

作者: SoundYoung | 来源:发表于2019-08-16 11:08 被阅读0次
import 'package:flutter/foundation.dart';

class DartMethodBasic {

  //调用内置方法 void 表示无返回值

  static void test() {

    print(arrowMethod);

  }

  //有返回值的方法,返回类型不能设置成var,不知道返回值类型可以不写 比如去掉String  依然能够return

  String haveR() {

    int i = 0;

    return i.toString();

  }

  //有返回值 有参数

  int haveReAndP(int value) {

    return value++;

  }

  //箭头方法 将返回hello字符串  方法里只有一行代码  可以用箭头方法

  static String arrowMethod() => 'hello';

  //方法里面可以嵌套方法

  void innerMethod() {

    //这是一个方法的内部方法

    String helloText() {

      haveReAndP(1); //内部发发可以调用外部的方法

      return 'hello····';

    }

    helloText(); //外部的方法无法调用该方法

  }

  //调用可选参数的方法

  void methodTwo () {

    String address = getLocName('浙江', '杭州');

    print(address);

    String address2 = getLocName('浙江', '杭州','火炬大道','86');

    debugPrint(address2);



    // String address3 = getLocNameUseParamName('浙江', '杭州','火炬大道','86');//报错,用下面的方式

    String address3 = getLocNameUseParamName('浙江', '杭州',street:'火炬大道',citycode:'86');

    //命名参数为选填参数,方法里面的命名参数最好给默认值

    String address4 = getLocNameUseParamName('浙江', '杭州');

    String address5 = getLocNameAllUseParamName(privance: '浙江',city: '杭州',street:'火炬大道',citycode:'86');

  }

  //可选参数方法,后面的street  citycode为可选参数,使用见methodtwo,可选参数用[]包裹

  String getLocName (String privance,String city,[String street,String citycode]){

      StringBuffer stringBuffer = new StringBuffer();

      stringBuffer.write(privance);

      stringBuffer.write(city);

      if(street!=null) {

        stringBuffer.write(street);

      }

      if(citycode!=null) {

        stringBuffer.write(citycode);

      }

      return stringBuffer.toString();



  }

  //默认参数 street上有一个默认的参数 内容是‘江南大道’

  String getLocNameWithDefalut (String privance,String city,[String street='江南大道',String citycode]){

      StringBuffer stringBuffer = new StringBuffer();

      stringBuffer.write(privance);

      stringBuffer.write(city);

      if(street!=null) {

        stringBuffer.write(street);

      }

      if(citycode!=null) {

        stringBuffer.write(citycode);

      }

      return stringBuffer.toString();



  }

  //命名参数 命名参数用{}包裹,调用此类方法见methodTwo

  //默认参数 street上有一个默认的参数

  String getLocNameUseParamName (String privance,String city,{String street='江南大道',String citycode}){

      StringBuffer stringBuffer = new StringBuffer();

      stringBuffer.write(privance);

      stringBuffer.write(city);

      if(street!=null) {

        stringBuffer.write(street);

      }

      if(citycode!=null) {

        stringBuffer.write(citycode);

      }

      return stringBuffer.toString();



  }

  //全部都是命名参数的方法

  String getLocNameAllUseParamName ({String privance='江苏',String city='南京',String street='玄武湖街道',String citycode}){

      StringBuffer stringBuffer = new StringBuffer();

      stringBuffer.write(privance);

      stringBuffer.write(city);

      if(street!=null) {

        stringBuffer.write(street);

      }

      if(citycode!=null) {

        stringBuffer.write(citycode);

      }

      return stringBuffer.toString();



  }

  /*把方法当做参数,调用的方法*/

  void fnOne() {

    print('我是fnone方法');

  }

  void fnTwo (fn) {

    fn();

  }

  //当调用fnThree的时候,fnthree回调用fntwo,并把fnone穿过去,最终输入结果为‘我是fnone方法’

  void fnThree () {

    fnTwo(fnOne);

  }

  //匿名方法 匿名方法就是等号后面的部分,它是没有名字的,并且最后的大括号后面要加分号,必须用var和final修饰

  var person = () {

    print('我是好人');

  };

  /** 方法递归 求6的阶乘*/

  var sum = 1;

  void countSum (value) {

    sum*=value;

    if(value == 1) {

      print('6的阶乘的值'+sum.toString());

    }

    countSum(value-1);

  }

  void computeSix() {

    //求6的阶乘

    countSum(6);

  }

}

相关文章

网友评论

      本文标题:Dart/Flutter基础-函数(方法)

      本文链接:https://www.haomeiwen.com/subject/nnrfsctx.html