import 'dart:math'; //import 'package:flutter_spinning_wheel/flutter_spinning_wheel.dart'; import 'package:flutter/material.dart'; import 'dart:async'; //import 'package:fluttertoast/fluttertoast.dart'; //Test class SpinTheWheel extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'spin the wheel', theme: ThemeData(primarySwatch: Colors.blue), home: SpiningWheel(), ); } } class SpiningWheel extends StatefulWidget { @override _SpiningWheelState createState() => _SpiningWheelState(); } class _SpiningWheelState extends State<SpiningWheel> { final StreamController _dividerController = StreamController<int>(); final _wheelNotifier = StreamController<double>(); String _text = " "; @override void dispose() { super.dispose(); _dividerController.close(); _wheelNotifier.close(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: true, //leading: Builder( //builder: (BuildContext context) { //return IconButton( //icon: const Icon(Icons.keyboard_arrow_left), //onPressed: () { //Scaffold.of(context).openDrawer(); //}, //tooltip: MaterialLocalizations.of(context).openAppDrawerTooltip, //); //}, //), title: Container( child: Text( 'FylleKäk', style: TextStyle(fontSize: 20, fontFamily: 'AlfaSlabOne'), ), ), bottom: PreferredSize( child: Container( margin: EdgeInsets.fromLTRB(0, 0, 0, 20), color: Colors.white, height: 2.0, ), preferredSize: Size.fromHeight(4.0), ), backgroundColor: Color.fromARGB( 255, 133, 191, 240, ), elevation: 0.0), backgroundColor: Color.fromARGB( 255, 133, 191, 240, ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( height: 40.0, width: 95.0, ), /* SpinningWheel( Image.asset('assets/hjul.png'), width: 250, height: 250, initialSpinAngle: _generateRandomAngle(), spinResistance: 0.1, canInteractWhileSpinning: false, dividers: 2, onUpdate: _dividerController.add, onEnd: _dividerController.add, secondaryImage: Image.asset('assets/pilen.png'), secondaryImageHeight: 60, secondaryImageWidth: 60, shouldStartOrStop: _wheelNotifier.stream, ), */ StreamBuilder( stream: _dividerController.stream, builder: (context, snapshot) => snapshot.hasData ? RouletteScore(snapshot.data as int) : Container(), ), SizedBox( height: 10.0, width: 95.0, ), ButtonTheme( minWidth: 220.0, height: 60.0, child: RaisedButton( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(18.0)), color: Color.fromARGB(255, 109, 181, 240), textColor: Color.fromARGB(255, 255, 255, 255), child: Text( "Spinn", style: TextStyle(fontSize: 25, fontFamily: 'AlfaSlabOne'), ), onPressed: () => _wheelNotifier.sink.add(_generateRandomVelocity()), ), ), SizedBox( height: 70.0, width: 95.0, ), Container( margin: EdgeInsets.fromLTRB(0, 0, 0, 0), ), Container( margin: EdgeInsets.fromLTRB(0, 0, 0, 0), // alignment: Alignment.bottomCenter, // height: 50.0, child: Column(children: <Widget>[ GridView( padding: const EdgeInsets.only(top: 0.0, bottom: 0), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 4), shrinkWrap: true, children: []), ]), ), ], ), ), ); } double _generateRandomVelocity() => (Random().nextDouble() * 6000) + 2000; double _generateRandomAngle() => Random().nextDouble() * pi * 2; } class RouletteScore extends StatelessWidget { final int selected; final Map<int, dynamic> labels = { 1: 'Hej', 2: 'hå', }; RouletteScore(this.selected); @override Widget build(BuildContext context) { return Text('${labels[selected]}', style: TextStyle(fontStyle: FontStyle.italic, fontSize: 24.0)); } }