getParam static method

Map<String, dynamic> getParam(
  1. String url
)

Implementation

static Map<String, dynamic> getParam(String url) {
  //support '/:iid=3/:iid1=2'
  //var regExp = RegExp('(/:[sid][^=]+)(=[^/]+)');

  //这样支持‘/:iid=3:iid1=2'这样每节两个参数
  var regExp = RegExp('(:[sid][^=]+)(=[^/^:]+)');

  var result = regExp.allMatches(url);
  Map<String, dynamic> args = <String, dynamic>{};
  for (RegExpMatch match in result) {
    //only one param:
    //var argName = match.group(1)!.substring(3);
    //var argType = match.group(1)![2];

    var argName = match.group(1)!.substring(2);
    var argType = match.group(1)![1];

    var argValue = match.group(2)!.substring(1); //去掉等号

    dynamic value;

    if (argType == 'i') value = int.tryParse(argValue);
    if (argType == 'd') value = double.tryParse(argValue);
    if (argType == 's') value = argValue;

    //注意这里还是用url相同的参数名,容易理解些。
    args[argType + argName] = value;
  }
  return args;
}