Flutter维基百科API访问插件wikapi的使用

Flutter维基百科API访问插件wikapi的使用

Wikapi

Wikapi 是一个用于访问维基百科和维基数据 API 的封装库。

可用的API

以下是 Wikapi 提供的一些可用 API:

  1. 搜索
    使用此 API 可以在维基百科中搜索特定关键词。

    https://en.wikipedia.org/w/api.php?action=help&modules=query&list=search
    
  2. 获取摘要
    使用此 API 可以获取维基百科页面的摘要信息。

    https://en.wikipedia.org/w/api.php?action=help&modules=query&prop=extracts|description|langlinks
    
  3. 获取页面属性
    使用此 API 可以获取维基百科页面的属性信息。

    https://en.wikipedia.org/w/api.php?action=help&modules=query&prop=pageprops
    
  4. 获取实体信息
    使用此 API 可以从维基数据中获取实体信息。

    https://www.wikidata.org/w/api.php?action=help&modules=wbgetentities
    

示例代码

以下是一个完整的 Flutter 示例代码,展示如何使用 wikapi 插件来访问维基百科 API 并获取搜索结果和页面摘要。

依赖安装

首先,在 pubspec.yaml 文件中添加 wikapi 依赖:

dependencies:
  wikapi: ^0.1.0

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

示例代码

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: WikiApiExample(),
    );
  }
}

class WikiApiExample extends StatefulWidget {
  [@override](/user/override)
  _WikiApiExampleState createState() => _WikiApiExampleState();
}

class _WikiApiExampleState extends State<WikiApiExample> {
  String searchQuery = '';
  String summaryText = '';

  // 搜索维基百科
  Future<void> searchWikipedia(String query) async {
    final results = await Wikapi.search(query);
    setState(() {
      searchQuery = query;
      summaryText = results.isEmpty
          ? '未找到相关内容'
          : results.first['snippet']; // 获取第一个搜索结果的摘要
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Wikapi 示例'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              decoration: InputDecoration(hintText: '输入搜索关键词'),
              onChanged: (value) {
                setState(() {
                  searchQuery = value;
                });
              },
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: () {
                if (searchQuery.isNotEmpty) {
                  searchWikipedia(searchQuery);
                }
              },
              child: Text('搜索'),
            ),
            SizedBox(height: 16),
            Text(
              summaryText,
              style: TextStyle(fontSize: 18),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


wikapi 是一个用于在 Flutter 应用中访问维基百科API的插件。通过这个插件,你可以轻松地在应用中获取维基百科的内容,例如文章摘要、搜索建议、页面内容等。

安装 wikapi

首先,你需要在 pubspec.yaml 文件中添加 wikapi 依赖:

dependencies:
  flutter:
    sdk: flutter
  wikapi: ^0.1.0  # 请查看最新的版本号

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

使用 wikapi

1. 初始化 wikapi

在你的 Dart 文件中,首先导入 wikapi

import 'package:wikapi/wikapi.dart';

然后,你可以创建一个 Wikapi 实例:

final wikapi = Wikapi();

2. 获取页面摘要

你可以使用 getPageSummary 方法来获取维基百科页面的摘要:

void fetchPageSummary() async {
  try {
    final summary = await wikapi.getPageSummary('Flutter (software)');
    print('Title: ${summary.title}');
    print('Summary: ${summary.extract}');
  } catch (e) {
    print('Error: $e');
  }
}

3. 搜索页面

你可以使用 searchPages 方法来搜索维基百科页面:

void searchPages() async {
  try {
    final results = await wikapi.searchPages('Flutter');
    for (var result in results) {
      print('Title: ${result.title}');
      print('Description: ${result.description}');
    }
  } catch (e) {
    print('Error: $e');
  }
}

4. 获取页面内容

你可以使用 getPageContent 方法来获取维基百科页面的完整内容:

void fetchPageContent() async {
  try {
    final content = await wikapi.getPageContent('Flutter (software)');
    print('Content: $content');
  } catch (e) {
    print('Error: $e');
  }
}

示例代码

以下是一个完整的示例,展示了如何使用 wikapi 获取页面摘要和搜索页面:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Wikapi Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: fetchPageSummary,
                child: Text('Get Page Summary'),
              ),
              ElevatedButton(
                onPressed: searchPages,
                child: Text('Search Pages'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

void fetchPageSummary() async {
  final wikapi = Wikapi();
  try {
    final summary = await wikapi.getPageSummary('Flutter (software)');
    print('Title: ${summary.title}');
    print('Summary: ${summary.extract}');
  } catch (e) {
    print('Error: $e');
  }
}

void searchPages() async {
  final wikapi = Wikapi();
  try {
    final results = await wikapi.searchPages('Flutter');
    for (var result in results) {
      print('Title: ${result.title}');
      print('Description: ${result.description}');
    }
  } catch (e) {
    print('Error: $e');
  }
}
回到顶部