Meta SEO 是一个专为 Web 应用程序设计的 Flutter 包,用于动态管理文档头部的 HTML 元标签。它使开发者能够通过设置标题、描述、关键词和 Open Graph 属性等元数据来增强搜索引擎优化(SEO)。该包可无缝集成到 Flutter Web 项目中,无需手动操作 DOM 即可轻松自定义 SEO 元素。它支持所有主要平台,包括 Web、Android、iOS、macOS、Windows 和 Linux,非常适合需要强大 SEO 性能的跨平台 Web 应用。
适合场景
提高搜索引擎可见性
增强社交媒体分享
优化网页应用元数据
多页应用的动态SEO
支持网页分析跟踪
主要特点
与 Flutter Web 的轻松集成
动态元标签管理
支持 Open Graph 和 Twitter 卡片
跨平台兼容性
自动更新标题标签
适合对象
Flutter web 开发人员
面向搜索引擎优化的Web应用
动态内容的应用程序
以营销为导向的网页应用
全栈 Flutter 团队
使用建议
主要针对Web平台
需要手动处理服务器端渲染
仅限客户端元数据管理
不适用于非 Web 目标
依赖于在Flutter的Web构建过程中的正确使用
原始 README
以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。
Meta Seo
Flutter package for Meta SEO.
Screenshots
About:
Meta SEO is package for adding meta data for html document in head tag
which meta tags or meta data make search engine optimization for web apps.
Then add the config MetaSEO method before the running of the Flutter app into main.dart file:
voidmain() {
// It is required to add the following to run the meta_seo package correctly// before the running of the Flutter appif (kIsWeb) {
MetaSEO().config();
}
runApp(constMyApp());
}
Finally add MetaSEO into your target web pages:
@overrideWidgetbuild(BuildContext context) {
// Add MetaSEO just into Web platform conditionif(kIsWeb) {
// Define MetaSEO objectMetaSEO meta = MetaSEO();
// add meta seo data for web app as you want
meta.author(author: 'Eng Mouaz M AlShahmeh');
meta.description(description: 'Meta SEO Web Example');
meta.keywords(keywords: 'Flutter, Dart, SEO, Meta, Web');
}
returnconstScaffold(
body: Center(child: Text('Meta SEO Web Example')),
);
}
Other example with GoRouter package
First: Add to pubspec.yaml:
dependencies:meta_seo:^3.0.9go_router:^5.2.0# Add the latest version
Second: The same as before and add the config MetaSEO method before the running of the Flutter app into main.dart file:
voidmain() {
// It is required to add the following to run the meta_seo package correctly// before the running of the Flutter appif (kIsWeb) {
MetaSEO().config();
}
runApp(constMyApp());
}
Then follow GoRouter configuration steps and latest add MetaSEO into your GoRouter as you want:
final router = GoRouter(
initialLocation: '/',
routes: <GoRoute>[
GoRoute(
path: '/',
builder: (BuildContext context, GoRouterState state) {
// Add MetaSEO just into Web platform conditionif(kIsWeb) {
// Define MetaSEO objectMetaSEO meta = MetaSEO();
// add meta seo data for web app as you want
meta.ogTitle(ogTitle: 'First Screen');
meta.description(description: 'First Screen');
meta.keywords(keywords: 'Flutter, Dart, SEO, Meta, Web');
}
returnconstFirstScreen();
},
),
GoRoute(
path: '/second_screen',
builder: (BuildContext context, GoRouterState state) {
// Add MetaSEO just into Web platform conditionif(kIsWeb) {
// Define MetaSEO objectMetaSEO meta = MetaSEO();
// add meta seo data for web app as you want
meta.ogTitle(ogTitle: 'Second Screen');
meta.description(description: 'Second Screen');
meta.keywords(keywords: 'Flutter, Dart, SEO, Meta, Web');
}
returnconstSecondScreen();
},
),
],
);
Extended MetaSEO tags
If you want to use Open Graph or Twitter Card meta tags
Note: You must be in live server not as a local host.
Note: The package delete any duplicated meta tags and keep the latest in order.
The same as before and if you want to use any tags does not exist into the main package
methods just add extended tags as the below:
@overrideWidgetbuild(BuildContext context) {
// Add MetaSEO just into Web platform conditionif(kIsWeb) {
// Define MetaSEO objectMetaSEO meta = MetaSEO();
// add meta seo open graph tags as you want
meta.facebookAppID(facebookAppID: 'your_app_id');
meta.ogTitle(ogTitle: 'Example Screen');
meta.ogDescription(ogDescription: 'Example Screen Description');
meta.ogImage(ogImage: 'https://example.com/example.png');
// here you can add any tags does not exist in the package as this
meta.propertyContent(property: 'og:site_name', content: 'example');
// or if you want to add twitter card meta tags just as the following
meta.twitterCard(twitterCard: TwitterCard.summaryLargeImage);
meta.twitterTitle(twitterTitle: 'Example Screen');
meta.twitterDescription(twitterDescription: 'Example Screen Description');
meta.twitterImage(twitterImage: 'https://example.com/example.png');
// here you can add any tags does not exist in the package as this
meta.nameContent(name: 'twitter:site', content: '@mouaz_m_shahmeh');
}
returnconstScaffold(
body: Center(child: Text('Extended Meta SEO Web Example')),
);
}