roll_slot_machine 1.0.0 copy "roll_slot_machine: ^1.0.0" to clipboard
roll_slot_machine: ^1.0.0 copied to clipboard

A flutter package for randoming widgets.

example/lib/main.dart

import 'dart:math';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:roll_slot_machine/roll_slot_machine.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Roll Slot Machine',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      initialRoute: 'home',
      onGenerateRoute: onGenerateRoute,
    );
  }

  Route onGenerateRoute(RouteSettings settings) {
    if (settings.name == 'home') {
      return MaterialPageRoute(
        builder: (BuildContext context) {
          return MyHomePage(
            title: 'title',
          );
        },
      );
    }
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  List<int> values = List.generate(100, (index) => index);

  var _rollSlotController = RollSlotController();
  var _rollSlotController1 = RollSlotController();
  var _rollSlotController2 = RollSlotController();
  var _rollSlotController3 = RollSlotController();
  final random = Random();
  final List<String> emojiList = [
    '๐Ÿ˜€',
    '๐Ÿ˜ƒ',
    '๐Ÿ˜„',
    '๐Ÿ˜',
    '๐Ÿ˜†',
    '๐Ÿ˜…',
    '๐Ÿคฃ',
    '๐Ÿ˜‚',
    '๐Ÿ™‚',
    '๐Ÿ™ƒ',
    '๐Ÿ˜‰',
    '๐Ÿ˜Š',
    '๐Ÿ˜‡',
    '๐Ÿฅฐ',
    '๐Ÿ˜',
    '๐Ÿคฉ',
    '๐Ÿ˜˜',
    '๐Ÿ˜—',
    'โ˜บ',
    '๐Ÿ˜š',
    '๐Ÿ˜™',
    '๐Ÿฅฒ',
    '๐Ÿ˜‹',
    '๐Ÿ˜›',
    '๐Ÿ˜œ',
    '๐Ÿคช',
    '๐Ÿ˜',
    '๐Ÿค‘',
    '๐Ÿค—',
    '๐Ÿคญ',
    '๐Ÿคซ',
    '๐Ÿค”',
    '๐Ÿค',
    '๐Ÿคจ',
    '๐Ÿ˜',
    '๐Ÿ˜‘',
    '๐Ÿ˜ถ',
    '๐Ÿ˜',
    '๐Ÿ˜’',
    '๐Ÿ™„',
    '๐Ÿ˜ฌ',
    '๐Ÿคฅ',
    '๐Ÿ˜Œ',
    '๐Ÿ˜”',
    '๐Ÿ˜ช',
    '๐Ÿคค',
    '๐Ÿ˜ด',
    '๐Ÿ˜ท',
    '๐Ÿค’',
    '๐Ÿค•',
    '๐Ÿคข',
    '๐Ÿคฎ',
    '๐Ÿคง',
    '๐Ÿฅต',
    '๐Ÿฅถ',
    '๐Ÿฅด',
    '๐Ÿ˜ต',
    '๐Ÿคฏ',
    '๐Ÿค ',
    '๐Ÿฅณ',
    '๐Ÿฅธ',
    '๐Ÿ˜Ž',
    '๐Ÿค“',
    '๐Ÿง',
    '๐Ÿ˜•',
    '๐Ÿ˜Ÿ',
    '๐Ÿ™',
    'โ˜น',
    '๐Ÿ˜ฎ',
    '๐Ÿ˜ฏ',
    '๐Ÿ˜ฒ',
    '๐Ÿ˜ณ',
    '๐Ÿฅบ',
    '๐Ÿ˜ฆ',
    '๐Ÿ˜ง',
    '๐Ÿ˜จ',
    '๐Ÿ˜ฐ',
    '๐Ÿ˜ฅ',
    '๐Ÿ˜ข',
    '๐Ÿ˜ญ',
    '๐Ÿ˜ฑ',
    '๐Ÿ˜–',
    '๐Ÿ˜ฃ',
    '๐Ÿ˜ž',
    '๐Ÿ˜“',
    '๐Ÿ˜ฉ',
    '๐Ÿ˜ซ',
    '๐Ÿฅฑ',
    '๐Ÿ˜ค',
    '๐Ÿ˜ก',
    '๐Ÿ˜ ',
    '๐Ÿคฌ',
    '๐Ÿ˜ˆ',
    '๐Ÿ‘ฟ',
    '๐Ÿ’€',
    'โ˜ ',
    '๐Ÿ’ฉ',
    '๐Ÿคก',
    '๐Ÿ‘น',
    '๐Ÿ‘บ',
    '๐Ÿ‘ป',
    '๐Ÿ‘ฝ',
    '๐Ÿ‘พ',
    '๐Ÿค–',
    '๐Ÿ˜บ',
    '๐Ÿ˜ธ',
    '๐Ÿ˜น',
    '๐Ÿ˜ป',
    '๐Ÿ˜ผ',
    '๐Ÿ˜ฝ',
    '๐Ÿ™€',
    '๐Ÿ˜ฟ',
    '๐Ÿ˜พ',
    '๐Ÿ’‹',
    '๐Ÿ‘‹',
    '๐Ÿคš',
    '๐Ÿ–',
    'โœ‹',
    '๐Ÿ––',
    '๐Ÿ‘Œ',
    '๐ŸคŒ',
    '๐Ÿค',
    'โœŒ',
    '๐Ÿคž',
    '๐ŸคŸ',
    '๐Ÿค˜',
    '๐Ÿค™',
    '๐Ÿ‘ˆ',
    '๐Ÿ‘‰',
    '๐Ÿ‘†',
    '๐Ÿ–•',
    '๐Ÿ‘‡',
    'โ˜',
    '๐Ÿ‘',
    '๐Ÿ‘Ž',
    'โœŠ',
    '๐Ÿ‘Š',
    '๐Ÿค›',
    '๐Ÿคœ',
    '๐Ÿ‘',
    '๐Ÿ™Œ',
    '๐Ÿ‘',
    '๐Ÿคฒ',
    '๐Ÿค',
    '๐Ÿ™',
    'โœ',
    '๐Ÿ’…',
    '๐Ÿคณ',
    '๐Ÿ’ช',
    '๐Ÿฆพ',
    '๐Ÿฆฟ',
    '๐Ÿฆต',
    '๐Ÿฆถ',
    '๐Ÿ‘‚',
    '๐Ÿฆป',
    '๐Ÿ‘ƒ',
    '๐Ÿง ',
    '๐Ÿซ€',
    '๐Ÿซ',
    '๐Ÿฆท',
    '๐Ÿฆด',
    '๐Ÿ‘€',
    '๐Ÿ‘',
    '๐Ÿ‘…',
    '๐Ÿ‘„',
    '๐Ÿ‘ถ',
    '๐Ÿง’',
    '๐Ÿ‘ฆ',
    '๐Ÿ‘ง',
    '๐Ÿง‘',
    '๐Ÿ‘ฑ',
    '๐Ÿ‘จ',
    '๐Ÿง”',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘ฑ',
    '๐Ÿ‘ฑ',
    '๐Ÿง“',
    '๐Ÿ‘ด',
    '๐Ÿ‘ต',
    '๐Ÿ™',
    '๐Ÿ™',
    '๐Ÿ™',
    '๐Ÿ™Ž',
    '๐Ÿ™Ž',
    '๐Ÿ™Ž',
    '๐Ÿ™…',
    '๐Ÿ™…',
    '๐Ÿ™…',
    '๐Ÿ™†',
    '๐Ÿ™†',
    '๐Ÿ™†',
    '๐Ÿ’',
    '๐Ÿ’',
    '๐Ÿ’',
    '๐Ÿ™‹',
    '๐Ÿ™‹',
    '๐Ÿ™‹',
    '๐Ÿง',
    '๐Ÿง',
    '๐Ÿง',
    '๐Ÿ™‡',
    '๐Ÿ™‡',
    '๐Ÿ™‡',
    '๐Ÿคฆ',
    '๐Ÿคฆ',
    '๐Ÿคฆ',
    '๐Ÿคท',
    '๐Ÿคท',
    '๐Ÿคท',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฎ',
    '๐Ÿ‘ฎ',
    '๐Ÿ‘ฎ',
    '๐Ÿ•ต',
    '๐Ÿ•ต',
    '๐Ÿ•ต',
    '๐Ÿ’‚',
    '๐Ÿ’‚',
    '๐Ÿ’‚',
    '๐Ÿฅท',
    '๐Ÿ‘ท',
    '๐Ÿ‘ท',
    '๐Ÿ‘ท',
    '๐Ÿคด',
    '๐Ÿ‘ธ',
    '๐Ÿ‘ณ',
    '๐Ÿ‘ณ',
    '๐Ÿ‘ณ',
    '๐Ÿ‘ฒ',
    '๐Ÿง•',
    '๐Ÿคต',
    '๐Ÿคต',
    '๐Ÿคต',
    '๐Ÿ‘ฐ',
    '๐Ÿ‘ฐ',
    '๐Ÿ‘ฐ',
    '๐Ÿคฐ',
    '๐Ÿคฑ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘จ',
    '๐Ÿง‘',
    '๐Ÿ‘ผ',
    '๐ŸŽ…',
    '๐Ÿคถ',
    '๐Ÿง‘',
    '๐Ÿฆธ',
    '๐Ÿฆธ',
    '๐Ÿฆธ',
    '๐Ÿฆน',
    '๐Ÿฆน',
    '๐Ÿฆน',
    '๐Ÿง™',
    '๐Ÿง™',
    '๐Ÿง™',
    '๐Ÿงš',
    '๐Ÿงš',
    '๐Ÿงš',
    '๐Ÿง›',
    '๐Ÿง›',
    '๐Ÿง›',
    '๐Ÿงœ',
    '๐Ÿงœ',
    '๐Ÿงœ',
    '๐Ÿง',
    '๐Ÿง',
    '๐Ÿง',
    '๐Ÿงž',
    '๐Ÿงž',
    '๐Ÿงž',
    '๐ŸงŸ',
    '๐ŸงŸ',
    '๐ŸงŸ',
    '๐Ÿ’†',
    '๐Ÿ’†',
    '๐Ÿ’†',
    '๐Ÿ’‡',
    '๐Ÿ’‡',
    '๐Ÿ’‡',
    '๐Ÿšถ',
    '๐Ÿšถ',
    '๐Ÿšถ',
    '๐Ÿง',
    '๐Ÿง',
    '๐Ÿง',
    '๐ŸงŽ',
    '๐ŸงŽ',
    '๐ŸงŽ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿง‘',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿƒ',
    '๐Ÿƒ',
    '๐Ÿƒ',
    '๐Ÿ’ƒ',
    '๐Ÿ•บ',
    '๐Ÿ•ด',
    '๐Ÿ‘ฏ',
    '๐Ÿ‘ฏ',
    '๐Ÿ‘ฏ',
    '๐Ÿง–',
    '๐Ÿง–',
    '๐Ÿง–',
    '๐Ÿง˜',
    '๐Ÿง‘',
    '๐Ÿ‘ญ',
    '๐Ÿ‘ซ',
    '๐Ÿ‘ฌ',
    '๐Ÿ’',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿ’‘',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ช',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘จ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฉ',
    '๐Ÿ‘ฉ',
    '๐Ÿ—ฃ',
    '๐Ÿ‘ค',
    '๐Ÿ‘ฅ',
    '๐Ÿซ‚',
    '๐Ÿ‘ฃ',
    '๐Ÿงณ',
    '๐ŸŒ‚',
    'โ˜‚',
    '๐ŸŽƒ',
    '๐Ÿงต',
    '๐Ÿงถ',
    '๐Ÿ‘“',
    '๐Ÿ•ถ',
    '๐Ÿฅฝ',
    '๐Ÿฅผ',
    '๐Ÿฆบ',
    '๐Ÿ‘”',
    '๐Ÿ‘•',
    '๐Ÿ‘–',
    '๐Ÿงฃ',
    '๐Ÿงค',
    '๐Ÿงฅ',
    '๐Ÿงฆ',
    '๐Ÿ‘—',
    '๐Ÿ‘˜',
    '๐Ÿฅป',
    '๐Ÿฉฑ',
    '๐Ÿฉฒ',
    '๐Ÿฉณ',
    '๐Ÿ‘™',
    '๐Ÿ‘š',
    '๐Ÿ‘›',
    '๐Ÿ‘œ',
    '๐Ÿ‘',
    '๐ŸŽ’',
    '๐Ÿฉด',
    '๐Ÿ‘ž',
    '๐Ÿ‘Ÿ',
    '๐Ÿฅพ',
    '๐Ÿฅฟ',
    '๐Ÿ‘ ',
    '๐Ÿ‘ก',
    '๐Ÿฉฐ',
    '๐Ÿ‘ข',
    '๐Ÿ‘‘',
    '๐Ÿ‘’',
    '๐ŸŽฉ',
    '๐ŸŽ“',
    '๐Ÿงข',
    '๐Ÿช–',
    'โ›‘',
    '๐Ÿ’„',
    '๐Ÿ’',
    '๐Ÿ’ผ',
    '๐Ÿฉธ',
    '๐Ÿ˜ฎ',
    '๐Ÿ˜ต',
    '๐Ÿ˜ถ',
  ];

  @override
  void initState() {
    _rollSlotController.addListener(() {
      // trigger setState method to reload ui with new index
      // in our case the AppBar title will change
      setState(() {});
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    final size = MediaQuery.of(context).size;
    return Scaffold(
      appBar: AppBar(
        title: Text(getText()),
      ),
      body: Center(
        child: Stack(
          children: [
            Align(
              alignment: Alignment.center,
              child: Padding(
                padding: const EdgeInsets.symmetric(horizontal: 100),
                child: Row(
                  children: [
                    RollSlotWidget(
                      emojiList: emojiList,
                      rollSlotController: _rollSlotController,
                    ),
                    if (size.width > 500)
                      RollSlotWidget(
                        emojiList: emojiList,
                        rollSlotController: _rollSlotController1,
                      ),
                    if (size.width > 800)
                      RollSlotWidget(
                        emojiList: emojiList,
                        rollSlotController: _rollSlotController2,
                      ),
                    if (size.width > 1000)
                      RollSlotWidget(
                        emojiList: emojiList,
                        rollSlotController: _rollSlotController3,
                      ),
                  ],
                ),
              ),
            ),
            Align(
              alignment: Alignment.center,
              child: Column(
                mainAxisSize: MainAxisSize.max,
                children: [
                  Expanded(
                    child: Container(
                      color: Colors.white,
                    ),
                  ),
                  Container(
                    height: 600,
                    decoration: BoxDecoration(
                        border:
                            Border.all(color: Color(0xff2f5d62), width: 50)),
                  ),
                  Expanded(
                    child: Container(
                      color: Colors.white,
                    ),
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          _rollSlotController.animateRandomly();
          if (size.width > 500) _rollSlotController1.animateRandomly();
          if (size.width > 800) _rollSlotController2.animateRandomly();
          if (size.width > 800) _rollSlotController3.animateRandomly();
        },
        child: Icon(Icons.refresh),
      ),
    );
  }

  String getText() {
    final String x = emojiList.elementAt(_rollSlotController.currentIndex) +
        emojiList.elementAt(_rollSlotController1.currentIndex) +
        emojiList.elementAt(_rollSlotController2.currentIndex) +
        emojiList.elementAt(_rollSlotController3.currentIndex);
    return x;
  }
}

class RollSlotWidget extends StatelessWidget {
  final List<String> emojiList;

  final RollSlotController rollSlotController;

  const RollSlotWidget({Key key, this.emojiList, this.rollSlotController})
      : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Flexible(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: <Widget>[
          Flexible(
            child: Padding(
              padding: const EdgeInsets.all(8.0),
              child: RollSlot(
                  duration: Duration(milliseconds: 6000),
                  itemExtend: 300,
                  shuffleList: false,
                  rollSlotController: rollSlotController,
                  children: emojiList.map(
                    (e) {
                      return BuildItem(
                        emoji: e,
                      );
                    },
                  ).toList()),
            ),
          ),
        ],
      ),
    );
  }
}

class BuildItem extends StatelessWidget {
  const BuildItem({
    Key key,
    this.index,
    this.emoji,
  }) : super(key: key);

  final int index;
  final String emoji;

  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: BoxDecoration(
        color: Colors.transparent,
        boxShadow: [
          BoxShadow(
              color: Color(0xff2f5d62).withOpacity(.2), offset: Offset(5, 5)),
          BoxShadow(
              color: Color(0xff2f5d62).withOpacity(.2), offset: Offset(-5, -5)),
        ],
        borderRadius: BorderRadius.circular(20),
        border: Border.all(
          color: Color(0xff2f5d62),
        ),
      ),
      alignment: Alignment.center,
      child: Text(
        emoji,
        key: Key(emoji),
        style: const TextStyle(fontSize: 100),
      ),
    );
  }
}
8
likes
30
pub points
35%
popularity

Publisher

unverified uploader

A flutter package for randoming widgets.

Repository (GitHub)
View/report issues

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on roll_slot_machine