wheel_expand_list 0.0.35 copy "wheel_expand_list: ^0.0.35" to clipboard
wheel_expand_list: ^0.0.35 copied to clipboard

outdated

It works in 3D with horizontal scrolling. If the area is exceeded, vertical scrolling occurs.

example/lib/main.dart

import 'dart:async';
import 'dart:math';

import 'package:flutter/material.dart';
import 'package:wheel_expand_list/wheel_expand_list.dart';
import 'package:wheel_expand_list/wheel_logic.dart';
import 'package:wheel_expand_list_example/wheel_data_set.dart';
import 'package:wheel_expand_list_example/wheel_widget.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({
    super.key,
  });

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  var logic = WheelLogic();
  late WheelDataSet data;
  late WheelWidget wheelWidget;

  int randomIntWithRange(int min, int max) {
    int value = Random().nextInt(max - min);
    return value + min;
  }

  @override
  void initState() {
    /// Example
    for (var i = 1; i < 11; i++) {
      logic.textList.add(_generateRandomString(i * randomIntWithRange(1, 100)));
      logic.pageList.add(randomIntWithRange(1, 9));
      logic.valueSet = logic.pageList.first;
    }
    super.initState();

    logic.initSet(
      marginSet: 50.0,
      fontSizeSet: 20.0,
    );

    data = WheelDataSet(logic: logic);
    wheelWidget = WheelWidget(
      marginSet: logic.margin,
      fontSizeSet: logic.fontSize,
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('index${logic.indexCount}: page${logic.pageCount}'),
        actions: [Row()],
        leading: IconButton(
          icon: const Icon(Icons.add),
          onPressed: () => {
            logic.slideActionFlg = !logic.slideActionFlg,
          },
        ),
      ),
      body: Stack(
        children: [
          wheelWidget.loopWidget(
            logic.globalKeys,
            context,
            logic.textList,
            logic.margin,
            logic.fontSize,
          ),
          StreamBuilder(
            stream: logic.streamController.stream,
            builder: (
              BuildContext context,
              AsyncSnapshot<List<double>> snapshot,
            ) {
              if (snapshot.hasData) {
                return SingleChildScrollView(
                  child: Column(
                    children: [
                      WheelExpandList(
                        callBack: (index) {
                          Future(() {
                            setState(() {
                              logic.indexCount = index;
                            });
                          });
                        },
                        pageCall: (index) {
                          Future(() {
                            setState(() {
                              data.startController(
                                index,
                                logic.c,
                                300,
                                Curves.easeIn,
                              );
                            });
                          });
                        },
                        wheelDataModel: data,
                        wheelPrimitiveWidget: wheelWidget,
                        streamController: logic.streamController,
                        margin: logic.margin,
                        padding: logic.margin / 2,
                        logic: logic,
                      ),
                    ],
                  ),
                );
              } else {
                return Container();
              }
            },
          ),
        ],
      ),
    );
  }

  String _generateRandomString(int len) {
    var r = Random();
    const chars =
        'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890';
    return List.generate(len.toInt(), (index) => chars[r.nextInt(chars.length)])
        .join();
  }
}
7
likes
0
points
74
downloads

Publisher

verified publishereverydaysoft.co.jp

Weekly Downloads

It works in 3D with horizontal scrolling. If the area is exceeded, vertical scrolling occurs.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on wheel_expand_list