在Flutter中,依赖关系必须指定版本号?

时间:2018-05-25 16:36:43

标签: dart flutter

通常,您必须添加类似

的内容
dependencies:
  camera: "^0.2.0"

到pubspec.yaml文件。如果我不包含版本号会怎么样?这是一件小事,但通常我会找到一段代码并想测试它。在顶部,我看到类似>>的内容

import 'package:camera/camera.dart';

我是否必须转到软件包的主页才能找到版本号?

3 个答案:

答案 0 :(得分:6)

您可以使用any

dependencies:
  camera: any

拥有更严格的约束使packages get / packages upgrade更容易搜索匹配版本,因为它减少了解决方案空间,但对于简单示例,它通常无关紧要。

pub最近得到了一个改进的解算器,使得any问题远远少于pub使用any时常常超时的问题。< / p>

答案 1 :(得分:1)

根据https://www.dartlang.org/tools/pub/dependencies

  

根据您要提供的数据,您可以指定依赖项   有两种方式。 最短方式是指定一个名称:

async private void button1_Click(object sender, EventArgs e)
    {
        int num = 0;//number of comparisons
        int swap = 0;//number of swaps

        for (int i = 0; i < 10; i++)
        {
            int border = checkBox1.Checked ? (10 - 1 - i) : 9;//if checkBox1.Checked we use advanced bubble sort

            for (int j = 0; j < border; j++)
            {
                arr[j].BackColor = arr[j + 1].BackColor = Color.Yellow;

                num++;
                label3.Text = num.ToString();

                if (Convert.ToInt32(arr[j].Text) > Convert.ToInt32(arr[j+1].Text))
                {
                    label1.Text = arr[j].Text + " is grater than " + arr[j + 1].Text + "\n\nNumbers must \nbe changed";
                    await Task.Delay(1500);

                    swap++;
                    label4.Text = swap.ToString();

                    string temp = arr[j].Text;
                    arr[j].Text = arr[j + 1].Text;
                    arr[j + 1].Text = temp;
                }
                else
                {
                    label1.Text = arr[j].Text + " is smaller \nor equall to " + arr[j + 1].Text + "\n\nNumbers stay";
                }

                await Task.Delay(1500);
                arr[j].BackColor = arr[j + 1].BackColor = Color.White;
                if (checkBox1.Checked) arr[j + 1].BackColor = Color.Cyan;//elements that are already sorted (only in advanced bubble sort)
            }

            if (checkBox1.Checked) arr[0].BackColor = Color.Cyan;
            label1.Text = "Array is now sorted";
        }
    }
  

这会对transmogrify产生依赖性,允许任何版本   并使用默认源(pub.dartlang.org)查找它。   要将依赖性限制为一系列版本,您可以提供一个   版本约束:

依赖关系:   transmogrify:^ 1.0.0

  

这会使用默认的源和创建对transmogrify的依赖   允许1.0.0到2.0.0之间的任何版本(但不包括2.0.0)。   有关版本的详细信息,请参阅版本约束和Caret语法   约束语法。

我想我的问题的真正答案是,通常,最好指定一个主要的版本号比率例如:^ 1.0.0 == 1.0.0&lt; 2.0.0 即可。这就是说,只要没有重大的变化,这个程序就可以运行并经过测试,并将继续使用这个库依赖。

答案 2 :(得分:1)

使用 traditional syntax 的版本约束是以下一系列:

任何 字符串 any 允许任何版本。这相当于一个空版本约束,但更明确。 虽然 any 是允许的,但我们不推荐

1.2.3

具体的版本号将依赖项固定为仅允许该确切版本。尽可能避免使用它,因为它会导致用户的版本锁定,并使他们难以将您的包与其他依赖它的包一起使用。

>=1.2.3

允许给定版本或任何更高版本。您通常会使用它。

>1.2.3

允许任何大于指定版本的版本,但不允许该版本本身。

<=1.2.3

允许低于或等于指定版本的任何版本。您通常不会使用它。

<1.2.3

允许低于指定版本的任何版本,但不允许该版本本身。这是您通常会使用的,因为它允许您指定您知道不适用于您的包的更高版本(因为它是第一个引入一些重大更改的版本)。

您可以根据需要指定版本部分,并且它们的范围是相交的。例如,“>=1.2.3 <2.0.0”允许从 1.2.32.0.0 的任何版本,不包括 2.0.0 本身。表达此范围的更简单方法是使用插入符号语法,或 ^1.2.3

注意:如果>字符在版本约束中,一定要引用约束字符串,这样字符就不会被解释为YAML语法。例如,永远不要使用>=1.2.3 <2.0.0;而是使用“>=1.2.3 <2.0.0”或^1.2.3