Flutter网站展示插件growerp_website的使用

Flutter网站展示插件growerp_website的使用

growerp_website 插件用于配置 GrowERP Flutter 前端系统创建的网站。以下是该插件的主要功能:

  1. 更改网站将显示在其下的域名。
  2. 更改网站的主标题。
  3. 输入 Google 统计 ID 以获取出色的访问者统计信息。
  4. 使用 Markdown 格式输入带图像的文本页面。
  5. 定义将在网站上显示的产品类别。
  6. 定义在首页“特色产品”或“优惠活动”部分中显示的产品。
  7. 能够上传 Obsidian/Logseq 存储库。

集成测试

集成测试可在示例组件中找到。它使用本地后端系统。

您也可以使用我们的测试后端系统,设置在 example/assets/cfg/app_settings.json 文件中:

"databaseUrlDebug": "https://backend.growerp.org",
"chatUrlDebug": "wss://chat.growerp.org"

启动测试使用 melos

melos build_all
melos l10n
cd example
flutter test integration_test

使用示例组件

与集成测试一样,您可以使用本地后端或我们的测试后端。在可以使用核心组件之前,您需要创建一个公司并接收一封包含密码的电子邮件。使用此密码登录,核心组件将出现在主菜单中。

以下是一个完整的示例代码,展示了如何使用 growerp_website 插件:

/*
 * This GrowERP software is in the public domain under CC0 1.0 Universal plus a
 * Grant of Patent License.
 * 
 * To the extent possible under law, the author(s) have dedicated all
 * copyright and related and neighboring rights to this software to the
 * public domain worldwide. This software is distributed without any
 * warranty.
 * 
 * You should have received a copy of the CC0 Public Domain Dedication
 * along with this software (see the LICENSE.md file). If not, see
 * <http://creativecommons.org/publicdomain/zero/1.0/>.
 */

// ignore_for_file: depend_on_referenced_packages
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:global_configuration/global_configuration.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:growerp_core/growerp_core.dart';
import 'package:growerp_website/growerp_website.dart';
import 'package:growerp_models/growerp_models.dart';
import 'package:hive_flutter/hive_flutter.dart';

Future main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await GlobalConfiguration().loadFromAsset('app_settings');
  await Hive.initFlutter();
  RestClient restClient = RestClient(await buildDioClient());
  ChatServer chatServer = ChatServer();

  Bloc.observer = AppBlocObserver();
  runApp(TopApp(
    restClient: restClient,
    classificationId: 'AppAdmin',
    chatServer: chatServer,
    title: "GrowERP Website",
    router: generateRoute,
    menuOptions: menuOptions,
    extraDelegates: const [WebsiteLocalizations.delegate],
    extraBlocProviders: getWebsiteBlocProviders(restClient),
  ));
}

// 菜单定义
List<MenuOption> menuOptions = [
  MenuOption(
    image: 'packages/growerp_core/images/dashBoardGrey.png',
    selectedImage: 'packages/growerp_core/images/dashBoard.png',
    title: '主界面',
    route: '/',
    userGroups: [UserGroup.admin, UserGroup.employee],
    child: const MainMenuForm(),
  ),
  MenuOption(
    image: 'packages/growerp_core/images/crmGrey.png',
    selectedImage: 'packages/growerp_core/images/crm.png',
    title: '网站',
    route: '/website',
    userGroups: [UserGroup.admin, UserGroup.employee],
    child: const WebsiteForm(),
  ),
];

// 路由
Route<dynamic> generateRoute(RouteSettings settings) {
  if (kDebugMode) {
    debugPrint('>>NavigateTo { ${settings.name} with: ${settings.arguments.toString()} }');
  }
  switch (settings.name) {
    case '/':
      return MaterialPageRoute(
          builder: (context) => HomeForm(menuOptions: menuOptions));
    case '/company':
      return MaterialPageRoute(
          builder: (context) => HomeForm(menuOptions: menuOptions));
    case '/user':
      return MaterialPageRoute(
          builder: (context) => HomeForm(menuOptions: menuOptions));
    case '/website':
      return MaterialPageRoute(
          builder: (context) => DisplayMenuOption(menuList: menuOptions, menuIndex: 1));
    default:
      return MaterialPageRoute(
          builder: (context) => FatalErrorForm(
              message: "Routing not found for request: ${settings.name}"));
  }
}

// 主菜单
class MainMenuForm extends StatelessWidget {
  const MainMenuForm({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return BlocBuilder<AuthBloc, AuthState>(builder: (context, state) {
      if (state.status == AuthStatus.authenticated) {
        //  Authenticate authenticate = state.authenticate!;
        return DashBoardForm(dashboardItems: [
          makeDashboardItem('dbWebsite', context, menuOptions[1], []),
        ]);
      }

      return const LoadingIndicator();
    });
  }
}

更多关于Flutter网站展示插件growerp_website的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter网站展示插件growerp_website的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


growerp_website 是一个用于 Flutter 的插件,主要用于构建企业级网站和电子商务平台。它提供了一系列的组件和功能,帮助你快速搭建一个功能齐全的网站。以下是如何使用 growerp_website 插件的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 growerp_website 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  growerp_website: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中,导入 growerp_website 插件。

import 'package:growerp_website/growerp_website.dart';

3. 使用插件组件

growerp_website 提供了多个组件,你可以根据需要在你的应用中使用这些组件。以下是一些常见的用法示例:

3.1 使用 HomePage 组件

HomePage 是一个预定义的首页组件,你可以直接使用它来展示网站的主页。

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('My Website'),
      ),
      body: HomePage(),
    );
  }
}

3.2 使用 ProductList 组件

ProductList 是一个用于展示产品列表的组件,你可以传递产品数据给它。

class ProductListPage extends StatelessWidget {
  final List<Product> products = [
    Product(name: 'Product 1', price: 10.0),
    Product(name: 'Product 2', price: 20.0),
    // Add more products
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Product List'),
      ),
      body: ProductList(products: products),
    );
  }
}

3.3 使用 ContactForm 组件

ContactForm 是一个用于处理用户联系表单的组件。

class ContactPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Contact Us'),
      ),
      body: ContactForm(),
    );
  }
}

4. 运行应用

完成上述步骤后,你可以运行你的 Flutter 应用来查看 growerp_website 插件的效果。

flutter run

5. 自定义和扩展

growerp_website 提供了多个可定制的组件和选项,你可以根据项目的需求进行扩展和自定义。你可以查阅插件的文档或源代码来了解更多细节。

6. 部署

当你完成开发后,可以使用 Flutter 提供的工具将你的网站部署到 Web 服务器上。

flutter build web
回到顶部