Flutter函数和数据处理工具库gato的使用

Flutter函数和数据处理工具库gato的使用

Gato

gato-logo

Version GitHub license

Gato 是一个受javascript lodash库启发的dart工具库。

Show some ❤️ and star the repo to support the project

安装

1. Depend on it

pubspec.yaml文件中添加gato: ^0.0.5到dependencies依赖中:

dependencies:
  gato: ^0.0.5

2. Import it

现在可以在Dart代码中使用它了:

import 'package:gato/gato.dart' as gato;

Map函数

Get

通过路径从Map中获取值。使用点符号表示法在[path]中访问嵌套键。

参数

  • map (Map<String, dynamic>): 您想从中获取值的地图。
  • path (String): 要获取的属性的路径。
  • converter (T Function(dynamic)?): 将值转换为自定义类型的函数

返回

  • <T>|null: 如果找不到path,则返回解析后的值或null

示例

Map map = {'a': {'b': 1}, 'c': '0xFFB74093'};
var b = gato.get(map, 'a.b');
var b = gato.get<int>(map, 'a.b');

Color color = gato.get<Color>(map, 'c', converter: (value) => Color(int.parse(value)));

Set

设置地图路径处的值。如果路径的一部分不存在,则创建它。

参数

  • map (Map<String, dynamic>): 要修改的地图。
  • path (String): 要设置的属性的路径。
  • value (T): 要设置的值。

返回

  • Map<String, dynamic>: 返回更新后的地图。

示例

Map map = {'a': {'b': 1}};
map = gato.set(map, 'a.b', 2);
or
map = gato.set<int>(map, 'a.b', 2);

Unset

删除地图路径处的属性。

参数

  • map (Map<String, dynamic>): 要修改的地图。
  • path (String): 要移除的属性的路径。

返回

  • Map<String, dynamic>: 返回更新后的地图。

示例

Map map = {'a': {'b': 1}, 'c': 2};
map = gato.unset(map, 'c'); // {'a': {'b': 1}}

示例Demo

以下是使用gato包的完整示例demo:

import 'package:flutter/material.dart';
import 'package:gato/gato.dart' as gato;

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Gato Demo')),
        body: Center(child: MyWidget()),
      ),
    );
  }
}

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  Map<String, dynamic> _map = {
    'a': {'b': 1},
    'c': '0xFFB74093',
  };

  void _updateMap() {
    setState(() {
      _map = gato.set(_map, 'a.c', 2);
      _map = gato.unset(_map, 'a.b');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text('Value of a.b: ${gato.get(_map, 'a.b') ?? 'Not Found'}'),
        Text('Value of a.c: ${gato.get(_map, 'a.c') ?? 'Not Found'}'),
        ElevatedButton(
          onPressed: _updateMap,
          child: Text('Update Map'),
        ),
      ],
    );
  }
}

这个示例展示了如何在Flutter应用中使用gato包来操作和展示Map数据。


更多关于Flutter函数和数据处理工具库gato的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

回到顶部