Flutter基础类库插件base_classes的使用
Flutter基础类库插件base_classes的使用
✨ Base Classes
使用所有自定义的基础类以简化代码。
🎖 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环境兼容。