Flutter Instagram风格故事展示插件instagram_stories_flutter的使用
Flutter Instagram风格故事展示插件instagram_stories_flutter
的使用
特性
- 可以在故事中添加多张图片。
- 可以添加多个故事。
开始使用
在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
instagram_stories_flutter: ^版本号
然后运行flutter pub get
来安装插件。
使用 StoriesBuilder
下面是一个简单的示例,展示了如何使用StoriesBuilder
来创建一个Instagram风格的故事展示。
展示图
示例代码
import 'package:flutter/material.dart';
import 'package:instagram_stories_flutter/instagram_stories_flutter.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
final List<Stories> allStories = [
Stories(
// url:
// 'https://sa.uat.adanione.com/-/media/Project/Campaigns/PaymentCategory/bill-payments-icon-svgs/ic_mobile_recharge.png',
title: 'Mobile Recharge',
storyItems: [
StoryItem(
url:
'https://sa.uat.adanione.com/-/media/Project/Campaigns/PaymentCategory/bill-payments-icon-svgs/ic_electricity_bill.png',
title: 'title11',
createdDate: null,
),
StoryItem(
url:
'https://sa.uat.adanione.com/-/media/Project/Campaigns/PaymentCategory/Sample/Electricity.png',
title: 'title12',
createdDate: 'createdDate12',
),
],
customWidget: const Center(
child: Text('Test'),
),
),
Stories(
url:
'https://sa.uat.adanione.com/-/media/Project/Campaigns/PaymentCategory/bill-payments-icon-svgs/ic_mobile_postpaid.png',
title: 'Mobile Postpaid',
storyItems: [
StoryItem(
url:
'https://sa.uat.adanione.com/-/media/Project/Campaigns/PaymentCategory/bill-payments-icon-svgs/ic_Fastag_recharge.png',
title: 'title21',
createdDate: 'createdDate21',
),
]),
];
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Instagram风格故事展示'),
),
body: SizedBox(
height: 100,
child: StoriesBuilder(
allStories: allStories,
// openedStoryColor: Colors.black,
// unopenedStoryColor: Colors.green,
),
),
),
);
}
}
更多关于Flutter Instagram风格故事展示插件instagram_stories_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Instagram风格故事展示插件instagram_stories_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
instagram_stories_flutter
是一个用于在 Flutter 应用中实现类似 Instagram 故事展示功能的插件。它允许你以轮播的方式展示多个故事,并且每个故事可以包含多个图片或视频片段。
以下是如何使用 instagram_stories_flutter
插件的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 instagram_stories_flutter
插件的依赖:
dependencies:
flutter:
sdk: flutter
instagram_stories_flutter: ^1.0.0 # 使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入插件:
import 'package:instagram_stories_flutter/instagram_stories_flutter.dart';
3. 创建故事数据
你需要为每个故事创建一个 Story
对象,并将它们放入一个列表中。每个 Story
对象可以包含多个 StoryItem
,每个 StoryItem
代表故事中的一个图片或视频片段。
List<Story> stories = [
Story(
user: User(
name: 'User 1',
profileImageUrl: 'https://example.com/profile1.jpg',
),
items: [
StoryItem.image(url: 'https://example.com/story1_1.jpg'),
StoryItem.image(url: 'https://example.com/story1_2.jpg'),
StoryItem.video(url: 'https://example.com/story1_3.mp4'),
],
),
Story(
user: User(
name: 'User 2',
profileImageUrl: 'https://example.com/profile2.jpg',
),
items: [
StoryItem.image(url: 'https://example.com/story2_1.jpg'),
StoryItem.video(url: 'https://example.com/story2_2.mp4'),
],
),
];
4. 展示故事
使用 InstagramStories
组件来展示故事列表。你可以将它放在你的页面布局中,例如 Scaffold
的 body
部分。
class MyHomePage extends StatelessWidget {
final List<Story> stories = [
// 你的故事数据
];
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Instagram Stories'),
),
body: InstagramStories(
stories: stories,
onComplete: () {
// 当所有故事播放完毕时调用
print('All stories completed');
},
),
);
}
}
5. 自定义选项
InstagramStories
组件提供了一些自定义选项,例如:
onComplete
: 当所有故事播放完毕时调用的回调函数。onStoryShow
: 当某个故事开始播放时调用的回调函数。onStoryPause
: 当某个故事暂停时调用的回调函数。onStoryResume
: 当某个故事恢复播放时调用的回调函数。
6. 运行应用
现在你可以运行你的 Flutter 应用,并看到类似 Instagram 的故事展示功能。
完整示例代码
import 'package:flutter/material.dart';
import 'package:instagram_stories_flutter/instagram_stories_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Instagram Stories Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
final List<Story> stories = [
Story(
user: User(
name: 'User 1',
profileImageUrl: 'https://example.com/profile1.jpg',
),
items: [
StoryItem.image(url: 'https://example.com/story1_1.jpg'),
StoryItem.image(url: 'https://example.com/story1_2.jpg'),
StoryItem.video(url: 'https://example.com/story1_3.mp4'),
],
),
Story(
user: User(
name: 'User 2',
profileImageUrl: 'https://example.com/profile2.jpg',
),
items: [
StoryItem.image(url: 'https://example.com/story2_1.jpg'),
StoryItem.video(url: 'https://example.com/story2_2.mp4'),
],
),
];
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Instagram Stories'),
),
body: InstagramStories(
stories: stories,
onComplete: () {
print('All stories completed');
},
),
);
}
}