Flutter维基百科展示插件wiki_frame的使用

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

Flutter维基百科展示插件wiki_frame的使用

简介

wiki_frame 是一个用于在 Flutter 应用中展示维基百科内容的插件。它能够监听用户的搜索短语,通过维基百科的 API 查询信息,并返回摘要和缩略图(如果存在),以便在应用中展示。

该插件已经在 Android 上测试过,理论上也可以在 iOS 上运行。

使用说明

依赖安装

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

dependencies:
  wiki_frame: ^1.0.0

然后执行以下命令以更新依赖:

flutter pub get

示例代码

以下是一个完整的示例代码,展示了如何使用 wiki_frame 插件来查询维基百科并展示结果。

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

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

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

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

class _WikiSearchPageState extends State<WikiSearchPage> {
  String _searchPhrase = '';
  String _extract = '';
  String _thumbnailUrl = '';

  Future<void> _searchWikipedia() async {
    // 清空之前的搜索结果
    setState(() {
      _extract = '';
      _thumbnailUrl = '';
    });

    // 调用维基百科 API 查询
    final result = await WikiFrame.search(_searchPhrase);

    // 更新 UI
    if (result != null) {
      setState(() {
        _extract = result.extract;
        _thumbnailUrl = result.thumbnailUrl;
      });
    } else {
      setState(() {
        _extract = '未找到相关内容';
        _thumbnailUrl = '';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('维基百科搜索'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              onChanged: (value) {
                setState(() {
                  _searchPhrase = value;
                });
              },
              decoration: InputDecoration(
                labelText: '请输入搜索关键词',
              ),
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _searchWikipedia,
              child: Text('搜索'),
            ),
            SizedBox(height: 16),
            if (_extract.isNotEmpty)
              Text(
                _extract,
                textAlign: TextAlign.justify,
              ),
            SizedBox(height: 16),
            if (_thumbnailUrl.isNotEmpty)
              Image.network(
                _thumbnailUrl,
                fit: BoxFit.contain,
              ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


wiki_frame 是一个用于在 Flutter 应用中展示维基百科内容的插件。它允许你在应用中嵌入维基百科页面,提供了一种简单的方式来展示维基百科的内容。

安装

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

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

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

基本用法

wiki_frame 提供了一个 WikiFrame 小部件,你可以直接在你的应用中使用它来展示维基百科页面。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('WikiFrame Example'),
        ),
        body: Center(
          child: WikiFrame(
            url: 'https://en.wikipedia.org/wiki/Flutter_(software)',
          ),
        ),
      ),
    );
  }
}

参数说明

WikiFrame 小部件支持以下参数:

  • url: 要展示的维基百科页面的 URL。
  • height: 框架的高度,默认是 300.0
  • width: 框架的宽度,默认是 double.infinity,即填充父容器的宽度。
  • loadingWidget: 在页面加载时显示的加载小部件,默认是一个 CircularProgressIndicator
  • errorWidget: 在加载页面出错时显示的错误小部件,默认是一个 Text 小部件,显示 "Failed to load page"

示例

以下是一个完整的示例,展示了如何使用 WikiFrame 小部件来展示维基百科页面,并自定义加载和错误小部件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('WikiFrame Example'),
        ),
        body: Center(
          child: WikiFrame(
            url: 'https://en.wikipedia.org/wiki/Flutter_(software)',
            height: 400.0,
            width: 300.0,
            loadingWidget: Center(
              child: CircularProgressIndicator(),
            ),
            errorWidget: Center(
              child: Text('Failed to load page.'),
            ),
          ),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!