Flutter 如何从有状态小部件获取参数

Flutter 如何从有状态小部件获取参数,flutter,dart,statefulwidget,Flutter,Dart,Statefulwidget,如何从另一个有状态类访问以下有状态类中的_selectedCurrency参数 import 'dart:io' show Platform; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'coin_data.dart'; class OsPicker extends StatefulWidget { @override _OsPickerState

如何从另一个有状态类访问以下有状态类中的_selectedCurrency参数

import 'dart:io' show Platform;

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

import 'coin_data.dart';

class OsPicker extends StatefulWidget {
  @override
  _OsPickerState createState() => _OsPickerState();
}

class _OsPickerState extends State<OsPicker> {
  String _selectedCurrency = currenciesList[0];

  DropdownButton<String> androidDropDown() {
    List<DropdownMenuItem<String>> dropdownItems = [];

    for (String currency in currenciesList) {
      var newItem = DropdownMenuItem(
        child: Text(currency),
        value: currency,
      );

      dropdownItems.add(newItem);
    }

    return DropdownButton<String>(
      value: _selectedCurrency,
      items: dropdownItems,
      onChanged: (value) {
        setState(() {
          _selectedCurrency = value;
        });
      },
    );
  }

  CupertinoPicker iOSPicker() {
    List<Text> pickerItems = [];

    for (String currency in currenciesList) {
      var newItem = Text(currency);
      pickerItems.add(newItem);
    }

    return CupertinoPicker(
        backgroundColor: Colors.lightBlue,
        itemExtent: 32.0,
        onSelectedItemChanged: (selectedIndex) {
          setState(() {
            _selectedCurrency = currenciesList[selectedIndex];
            print(_selectedCurrency);
          });
        },
        children: pickerItems);
  }

  @override
  Widget build(BuildContext context) {
    return Platform.isIOS ? iOSPicker() : androidDropDown();
  }
}
导入“dart:io”展示平台;
进口“包装:颤振/cupertino.dart”;
进口“包装:颤振/材料.省道”;
导入“coin_data.dart”;
类OsPicker扩展StatefulWidget{
@凌驾
_OsPickerState createState()=>\u OsPickerState();
}
类_OsPickerState扩展状态{
字符串_selectedCurrency=currenceslist[0];
DropdownButton和androidDropDown(){
列表下拉项=[];
for(货币列表中的字符串货币){
var newItem=DropdownMenuItem(
子项:文本(货币),
价值:货币,
);
添加(newItem);
}
返回下拉按钮(
值:\ u选择的货币,
项目:下拉项目,
一旦更改:(值){
设置状态(){
_所选货币=价值;
});
},
);
}
CupertinoPicker iOSPicker(){
列表pickerItems=[];
for(货币列表中的字符串货币){
var newItem=文本(货币);
pickerItems.add(newItem);
}
回程铜杯切纸机(
背景颜色:颜色。浅蓝色,
itemExtent:32.0,
onSelectedItemChanged:(selectedIndex){
设置状态(){
_selectedCurrency=CurrencesList[selectedIndex];
打印(_选择的货币);
});
},
儿童:皮克瑞特姆);
}
@凌驾
小部件构建(构建上下文){
return Platform.isIOS?iOSPicker():androidDropDown();
}
}
以下内容来自coin_dart文件:

常数列表电流列表=[ “澳元”, “BRL”, “CAD”, “人民币”, “欧元”, “英镑”, “港币”, “IDR”, “ILS”, “印度卢比”, “日元”, “MXN”, “NOK”, “新西兰元”, “印尼国家电力公司”, “罗恩”, "擦",, “瑞典克朗”, “新加坡元”, “美元”, “扎尔” ];

常量列表加密列表=[ “BTC”, “ETH”, “LTC”,
];

你不能,颤振中的数据只在下降。一种解决方法是创建一个全局文件来存储变量,或者使用类似的设计模式,允许您从应用程序中的任何位置访问数据

全球的示例

//global.dart
字符串选择货币;
//然后您可以按照以下操作访问它
将“./lib/global.dart”作为全局变量导入;
Globals.selectedCurrency=currenceslist[0];