Flutter基础布局架构插件base_scaffold的使用

Flutter基础布局架构插件base_scaffold的使用

base_scaffold #

pub package

一个用于基础 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_IMAGEAppToolbar.IMAGE_TYPE_ICON
toolbarLeftIconClick Function 左侧工具栏图标的点击回调。
toolbarRightIcon dynamic 右侧工具栏图标或图像。可以是字符串(Image.asset)或 Icon,具体取决于 toolbarRightIconType
toolbarRightIconType String 右侧工具栏图标的类型。可以是图像资源或图标。例如:AppToolbar.IMAGE_TYPE_IMAGEAppToolbar.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

1 回复

更多关于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),
      ),
    );
  }
}
回到顶部