Flutter故事分享插件stories_for_flutter的使用

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

Flutter故事分享插件stories_for_flutter的使用

Stories for Flutter #

Flutter是一个用于开发跨平台移动应用的框架,而stories_for_flutter则是基于Flutter的一个可定制化插件,允许你在应用程序中轻松添加类似于Instagram或WhatsApp的故事/状态功能。这个插件没有依赖外部库,完全由Flutter原生实现。

Screenshots #

以下是使用stories_for_flutter创建的故事界面的一些截图:

使用该插件 #

步骤1:导入包

在你的Dart文件顶部添加以下代码来导入stories_for_flutter包:

import 'package:stories_for_flutter/stories_for_flutter.dart';

步骤2:调用插件并使用它

你可以通过将每个页面包装在Scaffold中来自定义故事页面。下面是一个完整的示例demo,展示了如何使用StoriesStoryItem小部件来构建一个包含两组故事的应用程序。

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Stories Example'),
        ),
        body: Column(
          children: [
            Stories(
              displayProgress: true, // 显示进度条
              circlePadding: 2, // 故事图标周围的填充
              storyItemList: [
                StoryItem(
                  name: "First Story", // 故事名称
                  thumbnail: NetworkImage(
                    "https://assets.materialup.com/uploads/82eae29e-33b7-4ff7-be10-df432402b2b6/preview",
                  ), // 故事缩略图
                  stories: [ // 故事内容
                    Scaffold(
                      body: Container(
                        decoration: const BoxDecoration(
                          image: DecorationImage(
                            fit: BoxFit.cover,
                            image: NetworkImage(
                              "https://wallpaperaccess.com/full/16568.png",
                            ),
                          ),
                        ),
                      ),
                    ),
                    Scaffold(
                      body: Container(
                        decoration: const BoxDecoration(
                          image: DecorationImage(
                            fit: BoxFit.cover,
                            image: NetworkImage(
                              "https://i.pinimg.com/originals/2e/c6/b5/2ec6b5e14fe0cba0cb0aa5d2caeeccc6.jpg",
                            ),
                          ),
                        ),
                      ),
                    ),
                  ],
                ),
                StoryItem(
                  name: "2nd",
                  thumbnail: NetworkImage(
                    "https://www.shareicon.net/data/512x512/2017/03/29/881758_cup_512x512.png",
                  ),
                  stories: [
                    Scaffold(
                      body: Container(
                        decoration: const BoxDecoration(
                          image: DecorationImage(
                            fit: BoxFit.cover,
                            image: NetworkImage(
                              "https://i.pinimg.com/originals/31/bc/a9/31bca95ba39157a6cbf53cdf09dda672.png",
                            ),
                          ),
                        ),
                      ),
                    ),
                    const Scaffold(
                      backgroundColor: Colors.black,
                      body: Center(
                        child: Text(
                          "That's it, Folks !",
                          style: TextStyle(
                            color: Color(0xffffffff),
                            fontSize: 25,
                          ),
                        ),
                      ),
                    ),
                  ],
                ),
              ],
            ),
          ],
        ),
      ),
    );
  }
}

上述代码实现了两个故事分组,每个分组内包含不同的页面。你可以根据需要调整图片链接、文本样式和其他属性,以适应你的具体需求。此外,你还可以进一步探索stories_for_flutter提供的其他配置选项,如是否显示进度条等,以获得更丰富的用户体验。


更多关于Flutter故事分享插件stories_for_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter故事分享插件stories_for_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用stories_for_flutter插件的示例代码。stories_for_flutter是一个流行的Flutter插件,用于在应用中集成故事分享功能,类似于Instagram和Snapchat中的故事功能。

首先,你需要在你的pubspec.yaml文件中添加这个插件的依赖:

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

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

接下来,在你的Flutter项目中创建一个新的页面或使用现有的页面来展示故事。下面是一个简单的例子,展示如何使用stories_for_flutter插件:

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

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

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

class StoriesPage extends StatefulWidget {
  @override
  _StoriesPageState createState() => _StoriesPageState();
}

class _StoriesPageState extends State<StoriesPage> {
  final List<String> imageUrls = [
    'https://example.com/image1.jpg',
    'https://example.com/image2.jpg',
    'https://example.com/image3.jpg',
    // 添加更多图片URL
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Stories Page'),
      ),
      body: Stories(
        imageUrls: imageUrls,
        onPageChanged: (index) {
          print("Current page index: $index");
        },
        onStoryEnd: () {
          print("Reached the end of the stories.");
        },
        onStoryClick: (index) {
          print("Story clicked at index: $index");
        },
        // 其他可选参数
        showDotIndicators: true,
        autoPlay: true,
        pageSnap: true,
        scrollPhysics: BouncingScrollPhysics(),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,它包含一个StoriesPage页面。这个页面使用Stories组件来展示一系列的图片,这些图片的URL存储在一个列表中。

Stories组件接受以下参数:

  • imageUrls: 一个包含图片URL的列表。
  • onPageChanged: 当页面改变时的回调函数。
  • onStoryEnd: 当故事结束时(即到达最后一张图片)的回调函数。
  • onStoryClick: 当点击某个故事时的回调函数。
  • 其他可选参数,如showDotIndicators(是否显示指示点)、autoPlay(是否自动播放)、pageSnap(页面是否对齐)和scrollPhysics(滚动物理效果)。

请确保你已经替换了imageUrls列表中的URL为你自己的图片URL。

这个示例展示了如何基本使用stories_for_flutter插件来创建一个简单的故事分享功能。你可以根据实际需求进一步自定义和扩展这个示例。

回到顶部