Flutter基础类库插件base_classes的使用

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

Flutter基础类库插件base_classes的使用

✨ Base Classes

pub package pub package

使用所有自定义的基础类以简化代码。

🎖 Installing

pubspec.yaml文件中添加依赖:

dependencies:
  base_classes: 

Getting Started

你基本上有多个可以使用的基类:

  • CustomScaffold
  • CustomButton
  • CustomText
  • CustomTextFormField
  • CustomTextFormAppBar
  • Constant 类 - 包含各种方便的常量实例,
  • Navigation 类
  • SharedPreferences 类
  • AfterInit 类 - 用于在初始化方法后获取上下文,
  • 基本样式和字符串类
  • Loader 类

🚀 Showcase Demo

示例代码

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

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  Strings.countryCode = Strings.countryCodeIndia;
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MultiProvider(
        providers: [
          ChangeNotifierProvider(create: (context) => ThemeProvider()),
        ],
        child: MaterialApp(
            key: navigatorKey,
            debugShowCheckedModeBanner: false,
            title: 'Base Classes Demo',
            theme:
                ThemeData(visualDensity: VisualDensity.adaptivePlatformDensity),
            home: MyHomePage(title: 'Base Classes Demo Home Page')));
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> with OnInit {
  final scaffoldKey = GlobalKey<ScaffoldState>();

  [@override](/user/override)
  void afterFirstLayout(BuildContext context) {
    // 在这里获取初始化后的上下文
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return CustomScaffold(
        appBar: CustomAppBar(
            leading: kBackArrow(context, onTap: () {}, arrowColor: blackColor),
            height: kAppbarPreferredHeight,
            title: Strings.home,
            scaffoldKey: scaffoldKey),
        resizeToAvoidBottomPadding: true,
        onWillPop: () => Future.value(false),
        // 使它为true以启用Android返回按钮
        isLoading: /*true*/ false,
        // 使它为true以启用加载器
        body: Container(
            child: kScrollingView(Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  SizedBox(height: 150.0),
                  CustomText(text: Strings.ok, fontSize: size20),
                  SizedBox(height: 150.0),
                  CustomFormLabel(
                      keyBoardType: TextInputType.text,
                      highlightText: Strings.enterHere,
                      textInputAction: TextInputAction.done),
                  SizedBox(height: 150.0),
                  CustomButton(
                      onTap: () {
                        kYesNoSheet(
                            context: context,
                            yes: () {},
                            no: () {},
                            heading: Strings.home);
                      },
                      text: Strings.submit,
                      textColor: whiteColor,
                      width: 150.0,
                      height: 55.0,
                      buttonColor: orangeColor),
                  SizedBox(height: 150.0),
                  kClickActionSquash(
                      context: context,
                      child: kNetworkCircularImage(
                          context, Strings.dummyImageURL,
                          height: 150.0, width: 150.0),
                      onTap: () {
                        kYesNoDialog(
                            context: context,
                            yes: () {},
                            no: () {},
                            centerText: Strings.home);
                      }),
                  SizedBox(height: 150.0),
                ])),
            margin: EdgeInsets.symmetric(horizontal: kBodyPadding)),
        scaffoldKey: scaffoldKey);
  }
}

更多关于Flutter基础类库插件base_classes的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter基础类库插件base_classes的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用base_classes插件的一个简单示例。假设base_classes是一个提供基础类库的插件,它可能包含一些常用的工具类、数据模型基类或者UI组件基类。由于base_classes不是一个官方或广泛知名的Flutter插件,我将基于一个假设性的插件结构来展示其使用方式。

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

dependencies:
  flutter:
    sdk: flutter
  base_classes: ^x.y.z  # 替换为实际的版本号

然后,运行flutter pub get来安装依赖。

示例代码

1. 使用工具类

假设base_classes提供了一个StringUtils工具类,用于处理字符串操作:

import 'package:base_classes/utils/string_utils.dart';

void main() {
  String input = "  Hello, Flutter!  ";
  String trimmed = StringUtils.trim(input);
  print("Trimmed String: '$trimmed'");  // 输出: Trimmed String: 'Hello, Flutter!'
}

2. 使用数据模型基类

假设base_classes提供了一个BaseModel基类,用于数据模型的扩展:

import 'package:base_classes/models/base_model.dart';
import 'dart:convert';

class UserModel extends BaseModel {
  String name;
  int age;

  UserModel({required this.name, required this.age});

  // 从JSON反序列化
  factory UserModel.fromJson(Map<String, dynamic> json) => UserModel(
        name: json['name'] as String,
        age: json['age'] as int,
      );

  // 转换为JSON
  Map<String, dynamic> toJson() => {
        'name': name,
        'age': age,
      };
}

void main() {
  String jsonString = '{"name": "Alice", "age": 30}';
  UserModel user = UserModel.fromJson(jsonDecode(jsonString));
  print("User Name: ${user.name}, User Age: ${user.age}");  // 输出: User Name: Alice, User Age: 30
}

3. 使用UI组件基类

假设base_classes提供了一个BaseStatelessWidget基类,用于创建无状态小部件:

import 'package:flutter/material.dart';
import 'package:base_classes/widgets/base_stateless_widget.dart';

class MyWidget extends BaseStatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text('Hello from MyWidget!'),
    );
  }
}

void main() {
  runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(title: Text('Base Classes Example')),
      body: MyWidget(),
    ),
  ));
}

注意

  • 由于base_classes是一个假设性的插件,上述代码中的导入路径和类名需要根据实际插件的结构进行调整。
  • 在实际开发中,请查阅base_classes插件的官方文档或源代码,以获取准确的API信息和用法示例。
  • 确保插件版本与你的Flutter环境兼容。
回到顶部