Flutter基础布局架构插件base_scaffold的使用
Flutter基础布局架构插件base_scaffold的使用
base_scaffold #
一个用于基础 scaffold
的 Flutter 插件。在将此插件导入到您的项目后,导入 base_scaffold.dart
并使用 BaseScaffold()
来实现带有工具栏、加载视图等功能。
Demo (example/base_scaffold_demo) #
Getting Started #
在将此插件导入到您的项目后,导入以下内容以使用 base_scaffold
:
import 'package:base_scaffold/base_scaffold.dart';
您已经准备好使用 base_scaffold
。
How to use? #
以下是一个简单的示例,展示如何使用 BaseScaffold
:
[@override](/user/override)
Widget build(BuildContext context) {
return BaseScaffold(
// 设置屏幕主体内容
body: myBody(),
// 设置工具栏标题
toolbarTitle: '团队',
// 设置工具栏右侧文字并绑定点击事件
toolbarRightText: '添加',
toolbarRightTextClick: () {
// 点击事件逻辑
print('点击了添加按钮');
},
// 设置屏幕主体背景颜色
bodyBackgroundColor: Colors.white,
);
}
// 示例方法:返回屏幕主体内容
Widget myBody() {
return Center(
child: Text(
'这是屏幕主体内容',
style: TextStyle(fontSize: 20),
),
);
}
Properties: #
以下是 base_scaffold
提供的所有属性及其详细说明:
属性名称 | 类型 | 说明 |
---|---|---|
body | Widget | 屏幕主体内容,将在安全区域内显示,并位于工具栏和底部导航栏之间。 |
showToolbar | bool | 是否显示工具栏,默认为 true 。 |
toolbar | Widget | 自定义工具栏设计。 |
toolbarLeftIcon | dynamic | 左侧工具栏图标或图像。可以是字符串(Image.asset )或 Icon ,具体取决于 toolbarLeftIconType 。 |
toolbarLeftIconType | String | 左侧工具栏图标的类型。可以是图像资源或图标。例如:AppToolbar.IMAGE_TYPE_IMAGE 或 AppToolbar.IMAGE_TYPE_ICON 。 |
toolbarLeftIconClick | Function | 左侧工具栏图标的点击回调。 |
toolbarRightIcon | dynamic | 右侧工具栏图标或图像。可以是字符串(Image.asset )或 Icon ,具体取决于 toolbarRightIconType 。 |
toolbarRightIconType | String | 右侧工具栏图标的类型。可以是图像资源或图标。例如:AppToolbar.IMAGE_TYPE_IMAGE 或 AppToolbar.IMAGE_TYPE_ICON 。 |
toolbarRightIconClick | Function | 右侧工具栏图标的点击回调。 |
toolbarTitle | String | 工具栏标题。 |
toolbarRightText | String | 在右侧工具栏设置文本而不是图标。 |
toolbarRightTextClick | Function | 右侧工具栏文本的点击回调。 |
toolbarLeftText | String | 在左侧工具栏设置文本而不是图标。 |
toolbarLeftTextClick | Function | 左侧工具栏文本的点击回调。 |
toolbarBackgroundColor | Color | 工具栏背景颜色。 |
toolbarHeight | double | 自定义工具栏高度,最低高度应为 50。 |
toolbarLeftTextStyle | TextStyle | 左侧工具栏文本样式。 |
toolbarTitleTextStyle | TextStyle | 工具栏标题文本样式。 |
toolbarRightTextStyle | TextStyle | 右侧工具栏文本样式。 |
isScreenLoading | bool | 控制是否显示加载视图或整个屏幕主体内容。 |
isScreenLoadingWithBackground | bool | 控制是否在屏幕主体上显示加载视图。 |
screenLoaderView | Widget | 自定义屏幕加载视图。 |
backgroundScreenLoaderView | Widget | 自定义背景加载视图。 |
scaffoldBackgroundColor | Color | Scaffold 背景颜色。 |
bodyBackgroundColor | Color | 屏幕主体背景颜色。 |
注意:更多关于 base_scaffold
的属性和详细信息,请查看 文档。
完整示例代码
以下是一个完整的示例代码,展示了如何使用 base_scaffold
:
import 'package:flutter/material.dart';
import 'package:base_scaffold/base_scaffold.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return BaseScaffold(
body: Container(
padding: EdgeInsets.all(20),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'欢迎来到团队页面!',
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {},
child: Text('查看详情'),
),
],
),
),
// 设置工具栏标题
toolbarTitle: '团队',
// 设置工具栏右侧文字及点击事件
toolbarRightText: '添加',
toolbarRightTextClick: () {
print('点击了添加按钮');
},
// 设置屏幕背景颜色
bodyBackgroundColor: Colors.grey[100],
);
}
}
更多关于Flutter基础布局架构插件base_scaffold的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter基础布局架构插件base_scaffold的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
base_scaffold
是一个 Flutter 插件,旨在简化 Flutter 应用的基础布局架构。它提供了一些常用的布局组件和结构,帮助你快速搭建应用的页面布局。以下是如何使用 base_scaffold
插件的基本步骤:
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 base_scaffold
插件的依赖:
dependencies:
flutter:
sdk: flutter
base_scaffold: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 base_scaffold
:
import 'package:base_scaffold/base_scaffold.dart';
3. 使用 BaseScaffold
BaseScaffold
是一个高度可定制的 Scaffold
组件,它允许你轻松地设置页面的 AppBar、Body、BottomNavigationBar 等。
以下是一个简单的使用示例:
import 'package:flutter/material.dart';
import 'package:base_scaffold/base_scaffold.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return BaseScaffold(
appBar: AppBar(
title: Text('BaseScaffold Example'),
),
body: Center(
child: Text('Hello, BaseScaffold!'),
),
bottomNavigationBar: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.business),
label: 'Business',
),
BottomNavigationBarItem(
icon: Icon(Icons.school),
label: 'School',
),
],
currentIndex: 0,
selectedItemColor: Colors.amber[800],
onTap: (index) {
// Handle navigation
},
),
);
}
}
4. 自定义 BaseScaffold
BaseScaffold
提供了多个参数,允许你自定义页面的各个部分:
appBar
: 设置页面的 AppBar。body
: 设置页面的主体内容。floatingActionButton
: 设置页面的 FloatingActionButton。bottomNavigationBar
: 设置页面的 BottomNavigationBar。drawer
: 设置页面的 Drawer。endDrawer
: 设置页面的 EndDrawer。backgroundColor
: 设置页面的背景颜色。resizeToAvoidBottomInset
: 是否调整页面以避免底部插入(如键盘)。
5. 高级用法
BaseScaffold
还支持一些高级功能,例如自定义状态管理和主题设置。你可以通过继承 BaseScaffold
并重写相关方法来实现更复杂的布局需求。
6. 示例代码
以下是一个更复杂的示例,展示了如何使用 BaseScaffold
创建一个带有 Drawer 和 FloatingActionButton 的页面:
import 'package:flutter/material.dart';
import 'package:base_scaffold/base_scaffold.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomePage(),
);
}
}
class HomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return BaseScaffold(
appBar: AppBar(
title: Text('Complex BaseScaffold Example'),
),
body: Center(
child: Text('Welcome to the Home Page!'),
),
drawer: Drawer(
child: ListView(
padding: EdgeInsets.zero,
children: <Widget>[
DrawerHeader(
decoration: BoxDecoration(
color: Colors.blue,
),
child: Text(
'Drawer Header',
style: TextStyle(
color: Colors.white,
fontSize: 24,
),
),
),
ListTile(
title: Text('Item 1'),
onTap: () {
// Handle item 1 tap
},
),
ListTile(
title: Text('Item 2'),
onTap: () {
// Handle item 2 tap
},
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
// Handle FAB press
},
child: Icon(Icons.add),
),
);
}
}