Flutter故事展示插件fstories_widget的使用

Flutter故事展示插件fstories_widget的使用

Flutter包fstories_widget允许你在Flutter应用中使用故事机制。该插件具有高度可定制性,并且不依赖外部库。

使用方法

StoriesPage至少需要三个参数:contentcardDecoration

/// 最小示例:
return Scaffold(
  body: StoriesCardList(
    cards: [
        StoriesPage(
          cardDecoration: const CardDecorationWidget(
            imageSrc: 'images/s.png',
            shape: Shape.rectangle,
            size: Size(65, 85),
            color: Color(0xffb74093),
          ),
          content: [
            'images/6.jpeg',
          ],
        ),
    ]
);

上述示例仅展示了一个页面上的一个故事。

再看一个更详细的例子:

[@override](/user/override)
Widget build(BuildContext context) {
  return StoriesCardList(
    cards: [
      StoriesPage(
        name: 'man mustaches',
        borderDecoration: BorderDecoration(
          color: Colors.orange.withOpacity(0.5),
          strokeWidth: 7,
        ),
        cardDecoration: const CardDecorationWidget(
          imageSrc: 'images/s.png',
          shape: Shape.rectangle,
          size: Size(65, 85),
          color: Color(0xffb74093),
        ),
        content: [
          'images/6.jpeg',
          'images/7.jpeg',
          'images/8.jpeg',
          'images/9.jpeg',
        ],
      ),
      StoriesPage(
        name: 'man2',
        cardDecoration: const CardDecorationWidget(
          imageSrc: 'images/2.png',
          shape: Shape.rectangle,
          size: Size(65, 85),
          color: Color(0xffb74093),
        ),
        content: [
          'images/7.jpeg',
        ],
      ),

      StoriesPage(
        name: 'croc',
        cardDecoration: const CardDecorationWidget(
          imageSrc: 'images/croc.png',
          shape: Shape.rectangle,
          size: Size(65, 85),
          color: Color(0xffb74093),
        ),
        content: [
          'images/12.jpeg',
        ],
      ),
      StoriesPage(
        name: 'statue',
        cardDecoration: const CardDecorationWidget(
          imageSrc: 'images/stoneFace.jpeg',
          shape: Shape.rectangle,
          size: Size(65, 85),
          color: Color(0xffb74093),
        ),
        content: [
          'images/18.jpeg',
          'images/17.jpeg',
          'images/14.jpeg',
          'images/21.jpeg',
          'images/19.jpeg',
          'images/8.jpeg',
        ],
      ),

      StoriesPage(
        name: 'no_had',
        cardDecoration: const CardDecorationWidget(
          imageSrc: 'images/_.jpeg',
          shape: Shape.rectangle,
          size: Size(65, 85),
          color: Color(0xffb74093),
        ),
        content: [
          'images/13.jpeg',
          'images/10.jpeg',
          'images/14.jpeg',
        ],
      ),
    ],
  );
}

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

1 回复

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


fstories_widget 是一个用于在 Flutter 应用中展示故事(Stories)的插件。它可以帮助你轻松地实现类似 Instagram、Facebook 等应用中的故事展示功能。以下是如何使用 fstories_widget 的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  fstories_widget: ^0.0.1  # 请使用最新版本

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

2. 导入包

在你的 Dart 文件中导入 fstories_widget 包:

import 'package:fstories_widget/fstories_widget.dart';

3. 使用 FStoriesWidget

FStoriesWidgetfstories_widget 插件中的主要组件,用于展示故事。你可以通过传递一个 List<Story> 来初始化它。

以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: StoryScreen(),
    );
  }
}

class StoryScreen extends StatelessWidget {
  final List<Story> stories = [
    Story(
      imageUrl: 'https://via.placeholder.com/300',
      duration: Duration(seconds: 5),
    ),
    Story(
      imageUrl: 'https://via.placeholder.com/400',
      duration: Duration(seconds: 7),
    ),
    // 添加更多故事
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Stories'),
      ),
      body: Center(
        child: FStoriesWidget(
          stories: stories,
          onComplete: () {
            print('所有故事播放完毕');
          },
        ),
      ),
    );
  }
}

4. 自定义故事

Story 类允许你自定义每个故事的内容。你可以指定图片 URL、视频 URL、持续时间等。

Story(
  imageUrl: 'https://via.placeholder.com/300',
  videoUrl: 'https://www.sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4',
  duration: Duration(seconds: 10),
  onStoryShow: () {
    print('故事开始展示');
  },
  onStoryEnd: () {
    print('故事展示结束');
  },
),

5. 处理故事事件

FStoriesWidget 提供了几个回调函数来处理故事事件:

  • onComplete: 当所有故事播放完毕时触发。
  • onStoryShow: 当某个故事开始展示时触发。
  • onStoryEnd: 当某个故事展示结束时触发。

6. 自定义样式

你可以通过 FStoriesWidgetstyle 参数来自定义故事展示的样式,例如进度条的颜色、宽度等。

FStoriesWidget(
  stories: stories,
  style: FStoriesStyle(
    progressBarColor: Colors.blue,
    progressBarHeight: 4.0,
    progressBarSpacing: 8.0,
  ),
  onComplete: () {
    print('所有故事播放完毕');
  },
),
回到顶部