【问题标题】:How to upgrade packages in VSCode/flutter?如何在 VSCode/flutter 中升级包?
【发布时间】:2019-05-12 21:16:42
【问题描述】:

我在颤振项目中使用 VS Code。我刚刚编辑了 pubspec.yaml 以指向更高版本的包,它会自动运行“flutter packages get”。在我的“/development//flutter/.pub-cache/hosted/pub.dartlang.org”目录中,我可以看到这两个版本。但是当我编译时,它看起来仍在使用旧版本。我尝试了各种方法,例如“flutter packages upgrade”、“flutter clean”等,但无济于事。查看 2 个包版本的源代码,我可以在较新的版本中看到我想要的更改。我如何指向新包?谢谢。

更新:

这是没有更新的“以太坊”包。我使用的是 3.0.0 版本(方法需要 2 个参数),然后切换到 3.1.0 版本(方法需要 3 个参数)。但是使用 3 arg 调用编译时参数计数不正确:

client.admin.personalSendTransaction(BigInt.parse(currentAddress), currentPassword,{});

[dart] Too many positional arguments: 2 expected, but 3 found. [extra_positional_arguments_could_be_named]

然而,将鼠标悬停在方法调用上确实表明它需要 3 个参数:

personalSendTransaction(BigInt address, String passphrase, {BigInt to, BigInt data, int gas, int gasPrice, int value, int nonce, int condition, bool conditionIsTimestamp: false}) → Future<BigInt>

pubspec.yaml:

    dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2

  # Get package(s) for talking to ethereum node
  # web3dart: '>=0.3.0'
  ethereum: ^3.1.0

  # read barcodes and QR codes
  barcode_scan: ^0.0.3

  # Generate a QR code
  qr: ^1.0.1

  # Display as actual symbol
  qr_flutter: ^1.1.5

dev_dependencies:
  flutter_test:
    sdk: flutter

在 pubspec.lock 中:

  ethereum:
    dependency: "direct main"
    description:
      name: ethereum
      url: "https://pub.dartlang.org"
    source: hosted
    version: "3.1.0"

版本 3.1.0 是我想要使用的。

运行 'flutter packages upgrade resolved' 产量:

[Gregorys-iMac]:(gkd) ~/Programs/wine_track $ flutter packages upgrade resolved
Running "flutter packages upgrade" in ....                   2.7s

在包缓存中,我两者都有:

/Users/gkd/development//flutter/.pub-cache/hosted/pub.dartlang.org/ethereum-3.0.0/lib/src/api/ethereum_api_admin.dart

/Users/gkd/development//flutter/.pub-cache/hosted/pub.dartlang.org/ethereum-3.1.0/lib/src/api/ethereum_api_admin.dart

【问题讨论】:

  • 您能在问题中添加您的 pubspec 文件吗?什么包没有更新?
  • 查看pubspec.lock文件是什么版本flutter packages upgrade resolved. What exactly does the dependency looks like that you added to pubspec.yaml`?

标签: visual-studio-code flutter


【解决方案1】:

flutter pub 升级 --major-versions

【讨论】:

    【解决方案2】:

    我为此创建了一个 python3 脚本,你可以使用。此脚本仅生成最新的包名称和版本,您必须复制并粘贴到 pubspec.yaml 文件中。

    import yaml
    import requests
    from lxml import etree
    from io import StringIO
    
    
    def getNewVersion(pkg_name):
        url = f'https://pub.dev/packages/{pkg_name}'
        with requests.get(url) as req:
            doc = etree.parse(StringIO(req.text), etree.HTMLParser()).getroot()
            title = doc.xpath('//h2[@class="title"]')[0].text.strip()
            return '^' + (title.split(' ')[1])
    
    
    if __name__ == "__main__":
        filename = 'pubspec.yaml'
        new_map = None
        with open(filename, 'r') as _f:
            docs = yaml.load(_f, Loader=yaml.FullLoader)
            deps = docs['dependencies']
            for package_name, old_version in deps.items():
                if package_name == 'flutter':
                    continue
                last_version = getNewVersion(package_name)
                print(f'{package_name}: {last_version}')
    

    【讨论】:

      【解决方案3】:

      您可以简单地在您的项目中运行flutter packages upgrade 来升级所有包。 Flutter 1.17 版本提供此功能

      【讨论】:

      【解决方案4】:

      转到 https://pub.dartlang.org/packages 并从那里找到最新的包。 在那里您可以看到一个安装标签。点击那个。 现在您可以将依赖项添加到您的 Flutter 项目中的 pubspec.ymal 文件中。 然后你可以在 VS Code 中按 ctrl+s 或在终端中输入 flutter packages get。 现在您可以导入到任何页面。

      【讨论】:

        【解决方案5】:

        好吧,没关系。这是我的错误。我将声明的“{ type:variablename, . . .}”解释为映射/哈希。实际上,它们是 Dart 的可选命名参数。只需使用它们中的任何一个而不使用包装大括号即可编译干净。

        【讨论】:

          猜你喜欢
          • 2020-11-25
          • 2021-04-20
          • 2021-03-27
          • 1970-01-01
          • 2021-03-29
          • 2020-01-05
          • 2022-12-16
          • 2016-02-14
          • 2011-03-20
          相关资源
          最近更新 更多