简体   繁体   English

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

[英]How to do I get a parameter from a stateful widget

How do I get access to the _selectedCurrency parameter which inside the following stateful class from another stateful class?如何从另一个有状态 class 访问以下有状态 class 中的 _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();
  }
}

The following is from the coin_dart file:以下来自 coin_dart 文件:

const List currenciesList = [ 'AUD', 'BRL', 'CAD', 'CNY', 'EUR', 'GBP', 'HKD', 'IDR', 'ILS', 'INR', 'JPY', 'MXN', 'NOK', 'NZD', 'PLN', 'RON', 'RUB', 'SEK', 'SGD', 'USD', 'ZAR' ]; const List currencyList = [ 'AUD', 'BRL', 'CAD', 'CNY', 'EUR', 'GBP', 'HKD', 'IDR', 'ILS', 'INR', 'JPY', ' MXN'、'NOK'、'NZD'、'PLN'、'RON'、'RUB'、'SEK'、'SGD'、'USD'、'ZAR'];

const List cryptoList = [ 'BTC', 'ETH', 'LTC', ]; const List cryptoList = ['BTC', 'ETH', 'LTC', ];

You can't, the data in Flutter are descending only.不能,Flutter 中的数据只能降序。 A workaround would be to create a global file to store your variables or to use a design pattern like BLoC which allow you to access data from anywhere in your application.一种解决方法是创建一个全局文件来存储变量或使用BLoC 之类的设计模式,它允许您从应用程序中的任何位置访问数据。

Example of Global全局示例

// global.dart
String selectedCurrency;

// Then you can do as follow to access it
import './lib/global.dart' as Globals;

Globals.selectedCurrency = currenciesList[0];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从有状态小部件内的有状态小部件调用方法 - How do I call a method from a stateful widget inside of a stateful widget 如何将数据从有状态小部件传递到 state 以确保小部件数据可用? - How do I pass data from a stateful widget to state ensuring widget data is available? 我如何正确地将变量从有状态小部件初始化为 flutter 中的另一个小部件并维护 state? - How do i correctly initialise a variable from a stateful widget to another widget in flutter and maintain state? 如何从另一个有状态小部件的列表中删除其自己的有状态小部件中的 ListTile? - How to I delete a ListTile in its own stateful widget from a list in another stateful widget? 如何将下拉菜单中选择的值传递给 Flutter/Dart 中它正下方的有状态小部件? - How do I pass the value selected from DropDown menu to a stateful widget right below it in Flutter/Dart? Flutter,如何在有状态小部件中正确声明和使用变量? - Flutter, how do I correctly declare and use variables in a stateful widget? 如何在有状态或无状态小部件之外访问 BuildContext? - How do I access BuildContext outside of a stateful or stateless widget? 如何在没有状态小部件的情况下放置上下文 - How do I put context without Stateful widget 如何在有状态小部件中设置 TextEditingController - How do i make a TextEditingController Required in a stateful widget 如何从无状态小部件变为有状态小部件? - How to change from Stateless Widget to Stateful Widget?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM