tn_arenas 0.0.4+4 copy "tn_arenas: ^0.0.4+4" to clipboard
tn_arenas: ^0.0.4+4 copied to clipboard

这是一个tn的flutter库,里边封装了一些自己经常用到的方法

初次上传 #

这是初次上传,我希望通过将自己的代码和公司的资源上传到服务器,来进一步提高产品的性能和稳定性。同时,我也希望能够为其他人提供学习的机会,但是还请大家不要轻易使用,因为这些功能都是按照自己的使用习惯封装的,存在一定的不确定性。

使用说明 #

为了更好的使用体验,在公司内部推广前,我已经对这个包进行了多次测试和优化。如果你是公司内部成员,可以根据具体业务需求进行调整,如果你是其他人,请了解一下功能特点,以便更好地学习使用。

功能特点 #

这个包主要用于表单项封装,请求封装,一些常用工具类封装。其中,主要包括如下几个功能:

  • 工具类
    • 防抖、节流
    • 键盘移除焦点工具
    • Request 请求类
    • 宽高计算方法
    • 本地存储类
  • 私有类型以及私有本地储存类
  • 扫码UI组件
  • 大数据量选择组件
  • 页面加载更多组件
  • FormItem封装
  • DetailItem封装

使用方法 #

工具类 #

防抖、节流

    Button(
        title: '提交',
        onTap: EventFilter.throttle("key", () {
            // ...
        }),
    )

键盘移除焦点工具

    Future.delayed(Duration(milliseconds: 50), () {
        HideKeybUtils.hideKeyShowfocus();
    });

Request 请求类

    class XxxRequest<T> {
    static String appId = '';
    static String contextPath = '/services/xxx';

    static postRequest<T>(url, {required Map options}) {
        return Request.post<T>('$contextPath$url', params: options["params"] ?? {}, data: options["data"], appId: appId, baseUrl: RequestConfig.baseUrl);
    }

    static getRequest(url, params) {
        return Request.get('$contextPath$url', params: params, appId: appId, baseUrl: RequestConfig.baseUrl);
    }

    static putRequest(url, {required Map options}) {
        return Request.put('$contextPath$url', params: options["params"] ?? {}, data: options["data"], appId: appId, baseUrl: RequestConfig.baseUrl);
    }
    }

宽高计算方法

    Container(
        height: ScreenAdapter.height(400)
        width: ScreenAdapter.width(100)
    )
    // 获取屏幕宽度
    ScreenAdapter.getScreenWidth()
    // 获取屏幕高度
    ScreenAdapter.getScreenHeight()

本地存储类

    class XxxStorage {
        static Future<void> setXxxx(value) async {
            await Storage.setString("XXXXX", jsonEncode(value));
        }

        static Future<List<XxxxAuths>> getXxxx() async {
            var action = await Storage.getString("XXXXX") ?? '';
            return XxxxAuths.formJson(jsonDecode(xxxx)).data;
        }

        static Future<void> removeXxxx() async {
            Storage.removeString("XXXXX");
        }
    }

组件类 #

扫码UI组件

    ScanWidget(
        onChanged: (value) {},
        title: "扫码",
        content: "xxxx",
        isShowButton: true,
        jobPageFunction: () {},
    )

大数据量选择组件

    List<BrnSelectCityModel> hotCityList = [];
    List<BrnSelectCityModel> cityList = [];
    BrnSingleSelectDevicePage(
        hotCityList: hotCityList, 
        cityList: cityList, 
        appBarTitle: "xxxx", 
        key: sonKey
    )

页面加载更多组件

    bool hasMore = true; //判断有没有数据
    bool _isInit = false; // 是否初始化
    _isInit?
    // ...
    :MoreWidgetPage(hasMore: hasMore)

FormItem封装

    void _onSubmit() {
        if (_formKey.currentState!.validate()) {
            // ...
        }
    }

    Form(
        key: _formKey,
        child: Column(
            children: [
                InputNumberFormItem(
                    label: "",
                    value: "",
                    required: false,
                    error: "",
                    unit: "",
                    onValidator: (value) {},
                    onChange: (value) {}
                );
                InputFormItem(
                    label: "",
                    value: "",
                    required: false,
                    error: "",
                    unit: "",
                    onValidator: (value) {},
                    onChange: (value) {}
                );
                SwitchFormItem(
                    label: "",
                    value: "",
                    required: false,
                    error: "",
                    onValidator: (value) {},
                    onChange: (value) {}
                );
                EnumFormItem(
                    context: context,
                    label: "",
                    value: "",
                    required: false,
                    error: "",
                    options: BrnMultiDataPickerEntity[],
                    onValidator: (value) {},
                    onChange: (value) {}
                );
                TimeFormItem(
                    context: context,
                    label: "",
                    value: "",
                    required: false,
                    error: "",
                    onValidator: (value) {},
                    onChange: (value) {}
                );
                DateTimeFormItem(
                    context: context,
                    label: "",
                    value: "",
                    required: false,
                    error: "",
                    onValidator: (value) {},
                    onChange: (value) {}
                );
                DateFormItem(
                    context: context,
                    label: "",
                    value: "",
                    required: false,
                    error: "",
                    onValidator: (value) {},
                    onChange: (value) {}
                );
                Button(
                    title: '提交',
                    onTap: EventFilter.throttle("dynamicForm", _onSubmit),
                )
            ]
        )
    )

DetailItem封装

    TextDetailItem(label: "xxxx", content: "xxxxx"),
    WidgetDetailItem(label: "xxxx", content: Text("xxxx")),
    TextAreaDetailItem(label: "工单描述", content: "xxxxxxx"),

风险提示 #

虽然我尽力将这个包做到尽善尽美,但是在使用它的时候,请务必注意以下几个方面:

  • 数据的备份
  • 安全性处理
  • 使用方式
  • 遵循本地法律法规等等

鉴于包存在一定的风险,我强烈建议在使用前多次测试,并严格遵守用户协议。

更新说明 #

随着产品需求的不断变化,我将会对这个包进行及时更新,或者提供新的解决方案。如果您有需要,请随时向我反馈,我也会及时提供技术支持和服务。

1
likes
45
points
4
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

这是一个tn的flutter库,里边封装了一些自己经常用到的方法

Homepage

License

BSD-3-Clause (license)

Dependencies

badges, bruno, common_utils, dio, flutter, flutter_screenutil, get, jwt_decoder, lpinyin, shared_preferences

More

Packages that depend on tn_arenas