Flutter访问Instagram公共API插件instagram_public_api的使用

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

Flutter访问Instagram公共API插件instagram_public_api的使用

概述

instagram_public_api 是一个Flutter包,用于获取Instagram用户的详细信息和下载帖子。本文将详细介绍如何在Flutter项目中使用这个插件。

如何使用

首先,在你的Flutter项目中导入该包:

import 'package:instagram_public_api/instagram_public_api.dart';

获取用户资料详情

以下是如何获取Instagram用户资料的示例(注意:用户必须是公开账号):

FlutterInsta insta = FlutterInsta();
// 获取用户资料详情(必须是公开账号)
InstaProfileData user = await insta.getProfileData("thefluttercommunity");
print(user.username);
print(user.profilePicURL);
print(user.bio);
print(user.externalURL);
print(user.followers);
print(user.following);
print(user.isVerified);
print(user.isPrivate);
print(user.username);

获取帖子详情

下面是如何获取特定帖子详情的示例(同样需要是公开帖子):

// 获取帖子详情(包括嵌套的图片和视频及详情)(必须是公开帖子)
final List<InstaPost> post = await FlutterInsta().getPostData(
    "https://www.instagram.com/p/CNuL9idBnsA/?utm_source=ig_web_copy_link");
for (int i = 0; i < post.length; i++) {
  print(post[i].dimensions);
  print(post[i].displayURL); // 帖子下载链接
  print(post[i].postType);
  print(post[i].thumbnailDimensions);
  print(post[i].thumbnailUrl);
  print(post[i].user.followers);
  print(post[i].user.isPrivate);
  print(post[i].user.isVerified);
  print(post[i].user.posts);
  print(post[i].user.profilePicURL);
  print(post[i].user.username);
  print(post[i].videoDuration);
}

示例Demo

以下是一个完整的示例代码,展示了如何使用instagram_public_api来获取用户资料和帖子详情:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Instagram Public API Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

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

class _MyHomePageState extends State<MyHomePage> {
  String username = '';
  String profilePicURL = '';
  String bio = '';
  String externalURL = '';
  int followers = 0;
  int following = 0;
  bool isVerified = false;
  bool isPrivate = false;

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

  Future<void> _fetchProfileData() async {
    FlutterInsta insta = FlutterInsta();
    // 获取用户资料详情(必须是公开账号)
    InstaProfileData user = await insta.getProfileData("thefluttercommunity");

    setState(() {
      username = user.username;
      profilePicURL = user.profilePicURL;
      bio = user.bio;
      externalURL = user.externalURL;
      followers = user.followers;
      following = user.following;
      isVerified = user.isVerified;
      isPrivate = user.isPrivate;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Instagram Public API Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Image.network(profilePicURL),
            Text('用户名: $username'),
            Text('简介: $bio'),
            Text('外部链接: $externalURL'),
            Text('粉丝数: $followers'),
            Text('关注数: $following'),
            Text('已验证: $isVerified'),
            Text('私密账户: $isPrivate'),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter访问Instagram公共API插件instagram_public_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter访问Instagram公共API插件instagram_public_api的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用 instagram_public_api 插件在 Flutter 应用中访问 Instagram 公共 API 的示例代码。这个示例展示了如何获取特定标签的帖子。

首先,确保你的 Flutter 项目已经添加了 instagram_public_api 依赖。你可以在 pubspec.yaml 文件中添加以下依赖:

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

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

接下来,在你的 Flutter 项目中创建一个 Dart 文件(例如 instagram_api_service.dart),用于封装对 Instagram 公共 API 的调用。

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

class InstagramApiService {
  final InstagramPublicApi _instagramApi = InstagramPublicApi();

  Future<List<Post>> getPostsByTag(String tag) async {
    try {
      var response = await _instagramApi.getTagFeed(tag: tag);
      return response.data.items;
    } catch (e) {
      print("Error fetching posts: $e");
      return [];
    }
  }
}

在这个服务类中,我们定义了一个方法 getPostsByTag,它接受一个标签名称作为参数,并返回与该标签相关的帖子列表。

接下来,在你的主页面或其他需要显示 Instagram 帖子的页面中,使用上述服务类来获取并显示帖子。

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

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

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

class InstagramFeedPage extends StatefulWidget {
  @override
  _InstagramFeedPageState createState() => _InstagramFeedPageState();
}

class _InstagramFeedPageState extends State<InstagramFeedPage> {
  final InstagramApiService _instagramApiService = InstagramApiService();
  List<Post> _posts = [];

  @override
  void initState() {
    super.initState();
    _fetchPosts();
  }

  Future<void> _fetchPosts() async {
    String tag = 'flutter';  // 你可以根据需要更改标签
    _posts = await _instagramApiService.getPostsByTag(tag);
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Instagram Feed'),
      ),
      body: _posts.isEmpty
          ? Center(child: CircularProgressIndicator())
          : GridView.builder(
              gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                crossAxisCount: 2,
                crossAxisSpacing: 4.0,
                mainAxisSpacing: 4.0,
              ),
              itemCount: _posts.length,
              itemBuilder: (context, index) {
                Post post = _posts[index];
                return Image.network(post.displayUrl);
              },
            ),
    );
  }
}

在这个示例中,我们创建了一个简单的 Flutter 应用,它在启动时从 Instagram 公共 API 获取与指定标签(例如 “flutter”)相关的帖子,并在 GridView 中显示这些帖子的图片。

请注意,由于 Instagram API 可能有访问限制和速率限制,确保你遵守 Instagram 的使用条款和条件,并妥善处理 API 错误和异常情况。此外,如果你计划在生产环境中使用此代码,请确保添加适当的错误处理和用户反馈机制。

回到顶部