Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振映射与开关盒_Flutter_Flutter Animation_Flutter Navigation - Fatal编程技术网

Flutter 颤振映射与开关盒

Flutter 颤振映射与开关盒,flutter,flutter-animation,flutter-navigation,Flutter,Flutter Animation,Flutter Navigation,我刚开始用颤振,我想执行一个旋转轮,一旦我点击旋转按钮,我想根据角度打开不同的页面。我使用了地图 我将在下面添加代码。映射正在提供值,但它在同一页面上导航。我希望每次单击“旋转”按钮和轮子旋转时都有不同的路线 import 'dart:async'; import 'dart:math'; import 'package:audioplayers/audio_cache.dart'; import 'package:audioplayers/audioplayers.dart'; impor

我刚开始用颤振,我想执行一个旋转轮,一旦我点击旋转按钮,我想根据角度打开不同的页面。我使用了
地图

我将在下面添加代码。映射正在提供值,但它在同一页面上导航。我希望每次单击“旋转”按钮和轮子旋转时都有不同的路线

import 'dart:async';

import 'dart:math';

import 'package:audioplayers/audio_cache.dart';
import 'package:audioplayers/audioplayers.dart';
import 'package:bedroom_game_flutter/playscreen.dart';
import 'package:bedroom_game_flutter/shake.dart';
import 'package:bedroom_game_flutter/slide1.dart';


//import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_spinning_wheel/flutter_spinning_wheel.dart';



import 'final.dart';

bool _isEnabled = true;

class Roulette extends StatefulWidget {
  final int selected;

   final Map<int,String> labels = {
     1:"A",
     2:"B",
     3:"C",
     4:"D"


  };

  Roulette(this.selected);

  @override
  _RouletteState createState() => new _RouletteState(this.selected);
}

class _RouletteState extends State<Roulette> {
  final int selected;

    final Map<int,String> labels = {
     1:"A",
     2:"B",
     3:"C",
     4:"D"


  };


  _RouletteState(this.selected);

  AudioCache _audioCache;
  RaisedButton raisedButton;

  final StreamController _dividerController = StreamController<int>();
  final _wheelNotifier = StreamController<double>();

  //bool _isEnabled = true;

  @override
  void initState() {
    super.initState();

    _audioCache = AudioCache(
        prefix: "sound/",
        fixedPlayer: AudioPlayer()..setReleaseMode(ReleaseMode.STOP));
  }

  void _handleclick() {
    _audioCache.play('spinning_wheel.mp3');
    _wheelNotifier.sink.add(
      _generateRandomVelocity(),

    );

    if (_isEnabled = true) {
      setState(() {
        _isEnabled = false;
      });
    }
  }

  void _hasclick() {
    setState(() {
      Navigator.push(context,
          MaterialPageRoute(builder: (context) => Final(this.selected)));
    });

    if (_isEnabled = false) {}
  }

  dispose() {
    _dividerController.close();
    _wheelNotifier.close();
  }

  @override
  Widget build(BuildContext context) {
    SystemChrome.setEnabledSystemUIOverlays([]);
    var _mybtn;
    return Scaffold(
      resizeToAvoidBottomPadding: false,
        // appBar: AppBar(backgroundColor: Color(0xffDDC3FF), elevation: 0.0),
        // backgroundColor: Color(0xffDDC3FF),
        body: Stack(children: <Widget>[
      Container(
        decoration: BoxDecoration(
            image: DecorationImage(
                image: AssetImage("assets/chance_bg.png"),
                fit: BoxFit.fill)),
        child: Column(mainAxisAlignment: MainAxisAlignment.center, children: [
          SpinningWheel(
            Image.asset('assets/spinthewheel_star2.png'),
            width: 310,
            height: 310,
            initialSpinAngle: _generateRandomAngle(),
            spinResistance: 0.6,
            canInteractWhileSpinning: false,
            dividers: 4,
            onUpdate: _dividerController.add,
            onEnd: _dividerController.add,
            secondaryImage:
                Image.asset('assets/arrow.png'),
            secondaryImageHeight: 90,
            secondaryImageWidth: 110,
            shouldStartOrStop: _wheelNotifier.stream,
          ),
          SizedBox(height: 30),
          StreamBuilder(
            stream: _dividerController.stream,
            builder: (context, snapshot) =>
                snapshot.hasData ? RouletteScore(snapshot.data) : Container(),
          ),
          SizedBox(height: 100.0),
          ButtonTheme(
              minWidth: 500.0,
              height: 48.0,
              child: MaterialButton(
                  color: Color(0xffff5757),
                  textColor: Colors.white,
                  key: _mybtn,
                  child: new Text(
                    "Spin",
                    style: TextStyle(fontSize: 35.0),
                  ),
                  onPressed: _isEnabled ? _handleclick : null)),
          // SizedBox(height: 50.0),
          // ButtonTheme(
          //     minWidth: 500.0,
          //     height: 48.0,
          //     child: MaterialButton(
          //         color: Color(0xfff14d66),
          //         textColor: Colors.white,
          //         key: _mybtn,
          //         child: new Text(
          //           "View My Task",
          //           style: TextStyle(fontSize: 35.0),
          //         ),
          //         onPressed: ()=>

          //         //_isEnabled ? null : _hasclick,
          //           Navigator.push(context, MaterialPageRoute(builder: (context)=>Final(this.selected))

          //        // },
        ]),
      )
    ]));
  }

  double _generateRandomVelocity() => (Random().nextDouble() * 9000) + 10000;

  double _generateRandomAngle() => Random().nextDouble() * pi * 2;
}

class RouletteScore extends StatefulWidget {
   int selected;

    Map<int,String> labels = {
     1:"A",
     2:"B",
     3:"C",
     4:"D"


  };


  RouletteScore(this.selected);

  @override
  _RouletteScoreState createState() => new _RouletteScoreState(this.selected);
}

class _RouletteScoreState extends State<RouletteScore> {
  final int selected;

  final Map<int,String> labels = {
     1:"A",
     2:"B",
     3:"C",
     4:"D"


  };


  _RouletteScoreState(this.selected);
  void _hasclick() {


    if (_isEnabled = false) {}

  }

  @override
  Widget build(BuildContext context) {
    return ButtonTheme(
              minWidth: 500.0,
              height: 48.0,
              child: MaterialButton(
                color: Color(0xffff5757),
                  child: Text("View My Voucher",
                  style: TextStyle(fontFamily: "font",
                  fontSize: 32.0),),


        onPressed: (){
          //want the different pages to open on this button



        }));
}
}
导入'dart:async';
导入“dart:math”;
导入“包:AudioPlayer/audio_cache.dart”;
导入“包:AudioPlayer/AudioPlayer.dart”;
进口“套装:卧室、游戏、扑动/游戏屏幕、飞镖”;
进口“套装:卧室\游戏\颤振/摇晃.飞镖”;
导入“套装:卧室、游戏、颤振/幻灯片1.飞镖”;
//导入“包:AudioPlayer/AudioPlayer.dart”;
进口“包装:颤振/cupertino.dart”;
进口“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
进口“包装:颤振纺纱轮/颤振纺纱轮.省道”;
导入“final.dart”;
bool _isEnabled=true;
类Roulette扩展了StatefulWidget{
最终选定int;
最终地图标签={
1:“A”,
2:“B”,
3:“C”,
4:“D”
};
轮盘赌(本次选择);
@凌驾
_RouletteState createState()=>新的_RouletteState(选择此选项);
}
类_轮盘测试扩展状态{
最终选定int;
最终地图标签={
1:“A”,
2:“B”,
3:“C”,
4:“D”
};
_轮盘赌(此选项已选定);
AudioCache\u AudioCache;
升起按钮升起按钮;
最终流控制器_dividerController=StreamController();
final _wheelNotifier=StreamController();
//bool _isEnabled=true;
@凌驾
void initState(){
super.initState();
_audioCache=audioCache(
前缀:“sound/”,
fixedPlayer:AudioPlayer()…设置ReleaseMode(ReleaseMode.STOP));
}
void_handleclick(){
_audioCache.play('spinning_wheel.mp3');
_wheelNotifier.sink.add(
_GeneratorDomainVelocity(),
);
如果(_isEnabled=true){
设置状态(){
_isEnabled=false;
});
}
}
void(点击){
设置状态(){
Navigator.push(上下文,
MaterialPage路线(生成器:(上下文)=>Final(this.selected));
});
如果(_isEnabled=false){}
}
处置{
_dividerController.close();
_wheelNotifier.close();
}
@凌驾
小部件构建(构建上下文){
SystemChrome.SetEnabledSystemEmioVerlays([]);
var_mybtn;
返回脚手架(
resizeToAvoidBottomPadding:false,
//appBar:appBar(背景颜色:颜色(0xffDDC3FF),标高:0.0),
//背景颜色:颜色(0xffDDC3FF),
主体:堆栈(子对象:[
容器(
装饰:盒子装饰(
图像:装饰图像(
图片:AssetImage(“assets/chance_bg.png”),
适合:BoxFit.fill),
子项:列(mainAxisAlignment:mainAxisAlignment.center,子项:[
旋转轮(
Image.asset('assets/spinthewheel_star2.png'),
宽度:310,
身高:310,
InitialSpingle:_GeneratorDomainAngle(),
自旋电阻:0.6,
caninteractwhilespining:false,
分隔符:4,
onUpdate:_dividerController.add,
onEnd:_dividerController.add,
第二图像:
Image.asset('assets/arrow.png'),
第二图像高度:90,
第二图像宽度:110,
shouldStartOrStop:\u wheelNotifier.stream,
),
尺寸箱(高度:30),
StreamBuilder(
流:_dividerController.stream,
生成器:(上下文,快照)=>
snapshot.hasData?轮盘赌(snapshot.data):容器(),
),
尺寸箱(高度:100.0),
钮扣(
最小宽度:500.0,
身高:48.0,
子:材质按钮(
颜色:颜色(0xffff5757),
textColor:Colors.white,
密钥:_mybtn,
儿童:新文本(
“旋转”,
样式:TextStyle(fontSize:35.0),
),
onPressed:_isEnabled?_handleclick:null)),
//尺寸箱(高度:50.0),
//钮扣(
//最小宽度:500.0,
//身高:48.0,
//子:材质按钮(
//颜色:颜色(0xfff14d66),
//textColor:Colors.white,
//密钥:_mybtn,
//儿童:新文本(
//“查看我的任务”,
//样式:TextStyle(fontSize:35.0),
//         ),
//按下:()=>
////\u已启用?空:\u单击,
//Navigator.push(上下文,MaterialPageRoute(builder:(上下文)=>Final(this.selected))
//        // },
]),
)
]));
}
双_生成器速度()=>(随机().nextDouble()*9000)+10000;
双_generateRandomAngle()=>Random().nextDouble()*pi*2;
}
类RouletteScore扩展了StatefulWidget{
选择int;
地图标签={
1:“A”,
2:“B”,
3:“C”,
4:“D”
};
轮盘赌(选择此选项);
@凌驾
_RouletteScoreState createState()=>新的_RouletteScoreState(此.选中);
}
类_RouletteScoreState扩展状态{
最终选定int;
最终地图标签={
1:“A”,
2:“B”,
3:“C”,
4:“D”
};
_轮盘赌CoreState(选择此选项);
void(点击){
如果(_isEnabled=false){}
}
@凌驾
小部件构建(构建上下文){
返回按钮(
最小宽度:500.0,
身高:48.0,
子:材质按钮(
颜色:颜色(0xffff5757),
子项:文本(“查看我的凭证”,
样式:TextStyle(fontFamily:“字体”,
字体大小:32.0),),
已按下:(){
//要在此按钮上打开不同的页面吗