【问题标题】:How to do I get a parameter from a stateful widget如何从有状态小部件中获取参数
【发布时间】:2020-11-05 23:32:03
【问题描述】:

如何从另一个有状态类访问以下有状态类中的 _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();
  }
}

以下来自 coin_dart 文件:

const 列出货币列表 = [ '澳元', 'BRL', 'CAD', '中国新年', '欧元', '英镑', '港币', '印尼盾', 'ILS', '印度卢比', '日元', 'MXN', “不”, '新西兰元', 'PLN', '罗恩', '擦', '瑞典克朗', '新元', '美元', 'ZAR' ];

常量列表cryptoList = [ '比特币', 'ETH', 'LTC', ];

【问题讨论】:

    标签: flutter dart statefulwidget


    【解决方案1】:

    你不能,Flutter 中的数据只是降序的。一种解决方法是创建一个全局文件来存储您的变量或使用像 BLoC 这样的设计模式,它允许您从应用程序中的任何位置访问数据。

    全局示例

    // global.dart
    String selectedCurrency;
    
    // Then you can do as follow to access it
    import './lib/global.dart' as Globals;
    
    Globals.selectedCurrency = currenciesList[0];
    

    【讨论】:

      猜你喜欢
      • 2021-08-27
      • 2021-02-16
      • 2021-05-19
      • 2019-10-06
      • 2019-12-20
      • 2021-12-24
      • 2023-01-13
      • 2019-12-28
      • 2021-06-11
      相关资源
      最近更新 更多