Dart-Java Buildon等效程序

Dart-Java Buildon等效程序,dart,build,path,uri,Dart,Build,Path,Uri,请看以下用Java编写的简单源代码: Uri helpUrl = Uri.parse(getString(R.string.url_help)); try { helpUrl = Uri.parse(mainUrl).buildUpon() .appendPath("xx") .appendPath("yy")

请看以下用Java编写的简单源代码:

Uri helpUrl = Uri.parse(getString(R.string.url_help));

        try
        {
            helpUrl = Uri.parse(mainUrl).buildUpon()
                    .appendPath("xx")
                    .appendPath("yy")
                    .appendPath("zzz.html")
                    .build();
        }
        catch (Exception ex)
        {
            //error
        }

请注意,
mainUrl
可以作为http或https提供,也可以是
http://host/xxx
http://host/xxx/
。在Java中,它将始终工作。我正在寻找一种在Dart中实现这一点的方法,但看起来没有任何
构建在
基础上的等效方法。如何在Dart中完成我需要的任务,有什么建议吗?在dart中,path没有setter,path segments list也没有setter,因此它不会有帮助。

您需要使用
UriBuilder
类,它是
uri
包的一部分

它在您的案例中的用法如下所示

var ub = UriBuilder.fromUri(Uri.tryParse('https://www.zombo.com/xx'));
ub.path += '/yy';
ub.path += '/zz';
Uri uri = ub.build();
// https://www.zombo.com/xx/yy/zz

没有路径分隔符的自动管理。它只是基于字符串。

所以它实际上什么都没有提供,我可以直接使用字符串,我不会说UriBuilder什么都没有提供。它允许您在一个位置单独组织和管理主机、路径、端口、方案等。但是,它并没有提供您想要的特定功能。如果您热衷于模仿java的行为,这将是一个使用扩展方法的好地方。您所寻求的功能并不复杂,因此我建议将其作为UriBuilder上的扩展方法编写,然后您可以按照自己的意愿使用它。好的,我理解。但在我看来,这仍然不是url解析器,它只是字符串解析器。CORECT添加路径的方法和java类似,在Dart中,这只是字符串添加。谢谢你的澄清,所以我需要自己来实施。