【问题标题】:How can I edit an api url using a TextField?如何使用 TextField 编辑 api url?
【发布时间】:2020-10-20 01:47:01
【问题描述】:

我正在尝试使我的 api url 能够被修改,以便我可以在我的 ListView.builder 中添加和删除股票。

这是我的 http 请求:

import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
import 'api_data.dart';

String stockWatchlist = 't,aapl,tsla,amd';
String sandToken = 'Tsk_38ddda0b877a4510b42a37ae713cdc96';

Future<List<Stock>> fetchStocks(http.Client client) async {
  final response = await client.get(
      'https://sandbox.iexapis.com/stable/stock/market/batch?symbols=$stockWatchlist&types=stats,quote&token=$sandToken');
  return compute(parseStocks, response.body);
}

List<Stock> parseStocks(String responseBody) {
  dynamic data = json.decode(responseBody);

  List<Stock> stockList = [];
  data.forEach((key, value) => stockList.add(Stock(key, value)));

  return stockList;
}

class Stock {
  String symbol;
  dynamic data;

  Stock(this.symbol, this.data);
}

这是我的文本字段:

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

class MyTextField extends StatelessWidget {
  final myController = TextEditingController();

  @override
  Widget build(BuildContext context) {

    return TextField(
      onSubmitted: (newText) {
      },
      controller: myController,
      cursorColor: Colors.white,
      textAlign: TextAlign.end,
      decoration: InputDecoration(
        border: InputBorder.none,
        hintText: 'Add Stock',
        hintStyle: TextStyle(color: Colors.grey),
        suffixIcon: Icon(
          Icons.add,
          color: Colors.white,
        ),
      ),
      style: TextStyle(
        fontSize: kMediumText,
        color: Colors.white,
      ),
      textCapitalization: TextCapitalization.characters,
    );
  }
}

目标是能够改变的值

String stockWatchlist = 't,aapl,tsla,amd';

使用 TextField,但我不确定如何使用 TextField 编辑字符串。由于这是我的第一个应用程序,我的知识非常有限。

谢谢。

【问题讨论】:

    标签: list api flutter dart textfield


    【解决方案1】:

    您将拥有一个List&lt;String&gt;,如下所示:List&lt;String&gt; stocks = ['tsla', 'aapl', 'amd']

    onSubmitted 回调中,您应该将字符串添加到列表中。 stocks.add(text);

    要将其转换为逗号分隔的字符串,只需使用join 方法: stocks.join(','); 将产生 "tsla,aapl,amd"

    【讨论】:

    • 谢谢!这帮助我弄清楚了这个问题。但是我仍然不知道如何将它与我的列表视图联系起来,所以我也可以从列表中删除。我会弄乱它,也许会在不同的线程中问。
    猜你喜欢
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2016-02-19
    相关资源
    最近更新 更多