Flutter参数传递插件args_simple的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter参数传递插件args_simple的使用

标题

Flutter参数传递插件args_simple的使用

内容

  • 简介

    • args_simple 是一个简单的参数解析器和处理器,集成JSON和dart:io。
    • 可以通过命令行参数来解析配置文件、用户信息、系统配置目录等。
  • API文档

    • 查看 API文档 获取完整函数、类和扩展列表。
  • 使用示例

import 'dart:io';

import 'package:args_simple/args_simple_io.dart';

/// Examples of valid values for the parameter `args`:
///
/// - `/path/config.json --port 81 -verbose`
/// - `/path/config.json -verbose --sys-config /my/sys-config-dir`
/// - `/path/config.json root`
void main(List<String> argsOrig) {
  var args = ArgsSimple.parse(argsOrig);

  if (args.isEmpty) {
    print(
        'USAGE: [%configFile.json] [%user] [--port] [--sys-config %systemConfig] [-verbose]');
    exit(0);
  }

  // Argument #0 is a JSON `File`:
  var config = args.argumentMatches(0, RegExp(r'.json$'))
      ? args.argumentAsFileContentJSON(0)!
      : {};

  // Argument #1 is an optional `String`, with `guest` as default:
  var user = args.argumentAsString(1, 'guest');

  // Option `sys-config` is a `Directory`, with `/default/sys-config-dir` as default:
  var systemConfigDir = args.optionAsDirectory('sys-config', Directory('/default/sys-config-dir'))!;

  // Option `--port` is an `int`, with 8080 as default:
  var port = args.optionAsInt('port', 8080);

  // Check for flag `-verbose`:
  var verbose = args.flag('verbose');

  if (verbose) {
    print('-- Config: $config');
    print('-- User: $user');
    print('-- System Config Dir: $systemConfigDir');
    print('-- Port: $port');
    print('-- Verbose: $verbose');
    print(args);
  }
}

源代码链接

特性与bug

贡献

  • 开源社区的帮助总是非常需要的:
    • 发现问题?请填写详细的bug报告。
    • 希望新功能?请提出功能请求并附上用例。
    • 使用并喜欢项目?宣传项目:撰写文章、发布帖子或捐款。
    • 是开发者?修复bug并提交pull request。实现新的功能,如其他训练算法和激活函数。
    • 已经帮助过?非常感谢你,贡献者和所有使用这个项目的其他人!

许可证

  • Apache License - Version 2.0

示例代码

import 'dart:io';

import 'package:args_simple/args_simple_io.dart';

/// Examples of valid values for the parameter `args`:
///
/// - `/path/config.json --port 81 -verbose`
/// - `/path/config.json -verbose --sys-config /my/sys-config-dir`
/// - `/path/config.json root`
void main(List<String> argsOrig) {
  var args = ArgsSimple.parse(argsOrig);

  if (args.isEmpty) {
    print(
        'USAGE: [%configFile.json] [%user] [--port] [--sys-config %systemConfig] [-verbose]');
    exit(0);
  }

  // Argument #0 is a JSON `File`:
  var config = args.argumentMatches(0, RegExp(r'.json$'))
      ? args.argumentAsFileContentJSON(0)!
      : {};

  // Argument #1 is an optional `String`:
  var user = args.argumentAsString(1, 'guest');

  // Option `sys-config` is a `Directory`:
  var systemConfigDir = args.optionAsDirectory('sys-config', Directory('/default/sys-config-dir'))!;

  // Option `--port` is an `int`, with 8080 as default:
  var port = args.optionAsInt('port', 8080);

  // Check for flag `-verbose`:
  var verbose = args.flag('verbose');

  if (verbose) {
    print('-- Config: $config');
    print('-- User: $user');
    print('-- System Config Dir: $systemConfigDir');
    print('-- Port: $port');
    print('-- Verbose: $verbose');
    print(args);
  }
}

更多关于Flutter参数传递插件args_simple的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter参数传递插件args_simple的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter中使用args_simple插件进行参数传递的示例代码。args_simple是一个简单的插件,用于在Flutter的不同页面或组件之间传递参数。假设你已经通过pubspec.yaml文件添加了args_simple依赖,并运行了flutter pub get

1. 添加依赖

首先,确保在你的pubspec.yaml文件中添加了args_simple依赖:

dependencies:
  flutter:
    sdk: flutter
  args_simple: ^x.y.z  # 请替换为最新的版本号

2. 导入插件

在你的Dart文件中导入args_simple

import 'package:args_simple/args_simple.dart';

3. 传递参数

假设你有两个页面:FirstPageSecondPage。你想从FirstPage传递参数到SecondPage

FirstPage.dart

import 'package:flutter/material.dart';
import 'package:args_simple/args_simple.dart';
import 'second_page.dart';  // 确保导入SecondPage

class FirstPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('First Page'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 创建参数对象
            var args = ArgsSimple()
              ..add('key1', 'value1')
              ..add('key2', 123);

            // 使用Navigator传递参数到SecondPage
            Navigator.push(
              context,
              MaterialPageRoute(
                builder: (context) => SecondPage.withArgs(args),
              ),
            );
          },
          child: Text('Go to Second Page'),
        ),
      ),
    );
  }
}

SecondPage.dart

import 'package:flutter/material.dart';
import 'package:args_simple/args_simple.dart';

class SecondPage extends StatelessWidget {
  final ArgsSimple args;

  // 工厂构造函数,用于接收参数
  static SecondPage withArgs(ArgsSimple args) {
    return SecondPage(
      args: args,
    );
  }

  const SecondPage({Key? key, required this.args}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Second Page'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Key1: ${args.getString('key1') ?? 'No value'}'),
            Text('Key2: ${args.getInt('key2') ?? 0}'),
          ],
        ),
      ),
    );
  }
}

4. 运行应用

确保你的main.dart文件正确设置了初始路由:

import 'package:flutter/material.dart';
import 'first_page.dart';  // 确保导入FirstPage

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: FirstPage(),
    );
  }
}

现在,当你运行应用并点击按钮时,参数将从FirstPage传递到SecondPage,并在页面上显示出来。

这个示例展示了如何使用args_simple插件在Flutter应用中传递参数。如果你有更复杂的需求,可能需要考虑使用其他更强大的状态管理解决方案,如providerriverpodbloc

回到顶部