Flutter Schema.org数据标记插件flutter_schema_org的使用

Flutter Schema.org 数据标记插件 flutter_schema_org 的使用

flutter_schema_org 提供了用于 Schema.org 词汇的 Dart 定义,并可以导出为 JSON-LD 格式。这些类型以完整的区分联合类型的形式暴露出来,使得自动补全和更严格的验证变得容易。

你可以在 Schema.org 上找到所有可用的模式。每个模式在这个库中都有一个前缀 Schema

例如:

使用方法

调用 SchemaOrg.writeJsonLd() 方法,并传入一个表示你的数据的 Schema.org 类。

SchemaOrg.writeJsonLd(
    SchemaOrganization(
        name: 'Oddbit',
        url: 'https://oddbit.id',
        logo: 'https://avatars.githubusercontent.com/u/1946799?s=200&v=4',
    ),
);

入门指南

首先,感谢您考虑参与。你是一个真正的超级粉丝,我们非常爱你!

所有的模式定义都是由 schema_parser CLI 脚本自动生成的,该脚本可以在仓库的 /parser 文件夹中找到。

报告错误和问题

验证所有模式及其使用方式的所有可能细节是一项巨大的任务。我们非常感激任何有助于改进此包的发现和链接到源代码或最佳实践。

我们非常感激你能提供的任何帮助,甚至更好的是你能提供有关如何改进生成所有代码的 schema_parser 脚本的建议。

示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用程序中使用 flutter_schema_org 插件。

import 'package:flutter/material.dart';
import 'package:flutter_schema_org/flutter_schema_org.dart';
import 'package:flutter_schema_org/schemas/list_item.dart';
import 'package:flutter_schema_org/schemas/item_list.dart';
import 'package:flutter_schema_org/schemas/product.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final List<SchemaListItem> items = [
    SchemaListItem(position: 1, item: SchemaProduct(name: '产品 1'))
  ];

  [@override](/user/override)
  void initState() {
    super.initState();

    SchemaOrg.writeJsonLd(
      SchemaItemList(
        url: 'https://products.id',
        numberOfItems: 10,
        itemListElement: items.map((e) => e).toList(),
      ),
      name: '第一个产品',
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Schema.org 示例应用',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSwatch(
          primarySwatch: Colors.green,
          accentColor: Colors.green.shade700,
          brightness: Brightness.dark,
        ),
      ),
      home: Scaffold(
        body: Center(
          child: IntrinsicWidth(
            child: GestureDetector(
              onTap: () {
                SchemaOrg.removeScript('第一个产品');
              },
              child: Card(
                child: Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Row(
                    children: [
                      const CircleAvatar(
                        backgroundImage: NetworkImage(
                            'https://avatars.githubusercontent.com/u/1946799?s=200&v=4'),
                        radius: 30,
                      ),
                      const SizedBox(width: 16),
                      Text(
                        'Oddbit',
                        style: Theme.of(context).textTheme.titleLarge?.copyWith(
                              color: Colors.green,
                            ),
                      ),
                    ],
                  ),
                ),
              ),
            ),
          ),
        ),
      ),
    );
  }
}

更多关于Flutter Schema.org数据标记插件flutter_schema_org的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter Schema.org数据标记插件flutter_schema_org的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用flutter_schema_org插件来进行Schema.org数据标记的一个示例。这个插件允许你轻松地在Flutter应用中集成Schema.org的标记,这对于SEO(搜索引擎优化)和增强网页内容的可读性非常有用,尤其是在应用内容需要被搜索引擎爬虫索引时。

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

dependencies:
  flutter:
    sdk: flutter
  flutter_schema_org: ^最新版本号 # 替换为实际最新版本号

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

接下来,你可以在你的Flutter应用中创建Schema.org标记。以下是一个简单的示例,展示如何为一个文章页面添加Schema.org标记:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SchemaOrgExample(),
    );
  }
}

class SchemaOrgExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Schema.org Example'),
      ),
      body: Builder(
        builder: (BuildContext context) {
          // 使用SchemaOrgWidget来创建Schema.org标记
          return SchemaOrgWidget(
            itemType: 'Article', // Schema.org类型
            itemScope: (context) {
              return <SchemaOrgProperty>[
                SchemaOrgProperty(
                  property: 'name',
                  content: 'Flutter Schema.org 示例文章',
                ),
                SchemaOrgProperty(
                  property: 'description',
                  content: '这是一个展示如何在Flutter中使用flutter_schema_org插件的示例文章。',
                ),
                SchemaOrgProperty(
                  property: 'author',
                  itemScope: (context) {
                    return <SchemaOrgProperty>[
                      SchemaOrgProperty(
                        property: 'name',
                        content: '作者姓名',
                      ),
                    ];
                  },
                ),
                SchemaOrgProperty(
                  property: 'datePublished',
                  content: '2023-10-01', // 文章的发布日期
                ),
                SchemaOrgProperty(
                  property: 'articleBody',
                  content: '这是文章的主体内容。你可以在这里添加更多的详细信息。',
                ),
              ];
            },
          );
        },
      ),
    );
  }
}

在这个示例中,我们创建了一个SchemaOrgWidget,它表示一个Article类型的Schema.org对象。我们为这个对象设置了几个属性,如name(文章名称)、description(文章描述)、author(作者信息,包括作者姓名)、datePublished(文章发布日期)和articleBody(文章内容)。

请注意,flutter_schema_org插件背后的实现可能会将这些Schema.org标记以某种方式(例如,通过Meta标签或JSON-LD)注入到HTML中,以便搜索引擎爬虫可以读取它们。然而,由于Flutter主要用于构建移动应用,这些标记在移动应用环境中可能不会直接影响SEO,但它们仍然可以用于增强应用内容的结构化和可读性。

此外,flutter_schema_org的具体用法和实现细节可能会随着版本的更新而有所变化,因此建议查阅该插件的最新文档以获取最准确的信息。

回到顶部