Flutter维基百科查询插件wikidart的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter维基百科查询插件wikidart的使用

Wikidart

License: MIT

一个用Dart编写的简单封装的维基媒体API。允许你查询和检索维基百科页面信息。

使用

一个典型的使用示例:

import 'package:wikidart/wikidart.dart';

Future<void> main() async {
  var res = await Wikidart.searchQuery('Google');
  var pageid = res?.results?.first.pageId;

  if (pageid != null) {
    var google = await Wikidart.summary(pageid);

    print(google?.title); // 返回 "Google"
    print(google?.description); // 返回 "美国科技公司"
    print(google?.extract); // 返回 "Google LLC 是一家美国跨国科技公司,专注于互联网相关业务..."
  }
}

特性

  • ✅ 按标题搜索
  • ✅ 通过页面ID获取摘要
  • ❌ 随机页面
  • ❌ 设置页面语言

贡献

请在 问题跟踪器 中提交功能请求和错误报告。


示例代码

以下是一个完整的示例代码,展示了如何使用 wikidart 插件来查询维基百科页面并获取其摘要信息。

import 'package:wikidart/wikidart.dart';

// 主函数
Future<void> main() async {
  // 使用 searchQuery 方法搜索页面
  var res = await Wikidart.searchQuery('Google');
  
  // 获取搜索结果的第一个页面ID
  var pageid = res?.results?.first.pageId;

  // 如果找到页面ID,则继续获取摘要信息
  if (pageid != null) {
    // 使用 summary 方法获取摘要信息
    var google = await Wikidart.summary(pageid);

    // 打印获取到的信息
    print(google?.title); // 返回 "Google"
    print(google?.description); // 返回 "美国科技公司"
    print(google?.extract); // 返回 "Google LLC 是一家美国跨国科技公司,专注于互联网相关业务..."
  }
}

更多关于Flutter维基百科查询插件wikidart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter维基百科查询插件wikidart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个使用Flutter维基百科查询插件 wikidart 的示例代码。这个示例展示了如何使用 wikidart 包来搜索维基百科条目并获取其摘要信息。

首先,确保在你的 pubspec.yaml 文件中添加 wikidart 依赖:

dependencies:
  flutter:
    sdk: flutter
  wikidart: ^x.y.z  # 请将 x.y.z 替换为当前最新版本号

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

接下来,是一个完整的 Flutter 应用示例,展示了如何使用 wikidart 包:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Wikidart Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: WikipediaSearchPage(),
    );
  }
}

class WikipediaSearchPage extends StatefulWidget {
  @override
  _WikipediaSearchPageState createState() => _WikipediaSearchPageState();
}

class _WikipediaSearchPageState extends State<WikipediaSearchPage> {
  final TextEditingController _controller = TextEditingController();
  String _searchResult = '';

  void _searchWikipedia(String query) async {
    final Wikipedia wikipedia = Wikipedia();
    try {
      final SearchResult searchResult = await wikipedia.search(query);
      if (searchResult.items.isNotEmpty) {
        final String pageId = searchResult.items.first.pageid;
        final Page page = await wikipedia.getPage(pageId);
        setState(() {
          _searchResult = page.extract;
        });
      } else {
        setState(() {
          _searchResult = 'No results found.';
        });
      }
    } catch (e) {
      setState(() {
        _searchResult = 'Error: ${e.message}';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Wikipedia Search'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            TextField(
              controller: _controller,
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                labelText: 'Search',
                suffixIcon: IconButton(
                  icon: Icon(Icons.search),
                  onPressed: () async {
                    final String query = _controller.text;
                    if (query.isNotEmpty) {
                      _searchWikipedia(query);
                    }
                  },
                ),
              ),
            ),
            SizedBox(height: 16.0),
            Expanded(
              child: SingleChildScrollView(
                child: Text(
                  _searchResult,
                  style: TextStyle(fontSize: 16.0),
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
}

在这个示例中,我们创建了一个简单的 Flutter 应用,它包含一个文本输入框和一个搜索按钮(通过后缀图标实现)。用户在输入框中输入查询词并点击搜索图标后,应用会使用 wikidart 包搜索维基百科,并显示第一个结果的摘要信息。

主要步骤:

  1. 初始化 wikidart 实例:通过 Wikipedia() 创建一个维基百科实例。
  2. 执行搜索:调用 wikipedia.search(query) 方法进行搜索。
  3. 获取页面信息:使用搜索结果中的 pageid 调用 wikipedia.getPage(pageId) 获取页面的详细信息。
  4. 更新 UI:使用 setState() 方法更新 UI 以显示搜索结果。

这个示例展示了基本的搜索和结果展示功能,你可以根据需要进一步扩展和优化,比如添加加载指示器、错误处理等。

回到顶部