尾随平面按钮在ListTile中溢出

时间:2019-10-30 16:48:17

标签: flutter

我有一个ListView和一个ListTile。每个ListTile的标题为Text,副标题为Text,后跟两个FlatbuttonsColumn中。但是Flatbuttons溢出了ListTitle。我如何确保FlatButtons不在范围内?

FlatButtons overflows

2 个答案:

答案 0 :(得分:0)

在这种情况下,您真的需要平面按钮吗?还是使用IconButton()更好? 无论如何,请记住,平面按钮的最小尺寸为88.0 x 36.0,可以用[ButtonTheme]覆盖。

还要记住,前导小部件和尾随小部件的高度是根据Material规范限制的。单行ListTiles例外,以实现可访问性。

https://api.flutter.dev/flutter/material/ListTile-class.html

例如:

    private void getInfoColonnina(){
    String url = "https://icantshowtheurlbutitworkfine_module.json";
    final SharedPreferences myPref = getSharedPreferences("loginPref", MODE_PRIVATE);
    final SharedPreferences.Editor myPreff = myPref.edit();

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            List<DistrBean> distrBeansList = new ArrayList<>();

            try {

                JSONObject jsonObject = new JSONObject(response);
                Iterator keys = jsonObject.keys();

                while (keys.hasNext()) {
                    Object key = keys.next();
                    JSONObject value = jsonObject.getJSONObject((String) key);
                    JSONObject info = value.getJSONObject("Distributore Information");
                    String LitriColonnina1 = info.getString("litriiniziocolonna");
                    String NomeDistributore1 = info.getString("NomeDistributore");
                    String id_distributore1 = info.getString("id_distributore");

                    DistrBean distrBean = new DistrBean();

                    distrBean.setLitriColonnina(LitriColonnina1);
                    distrBean.setNomeDistributore(NomeDistributore1);
                    distrBean.setIdDistributore(id_distributore1);

                    distrBeansList.add(distrBean);

                }

                ArrayAdapter<DistrBean> adapter = new ArrayAdapter<DistrBean>(InizioTurnoActivity.this, android.R.layout.simple_spinner_item, distrBeansList);
                adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner.setAdapter(adapter);
                spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                        DistrBean distrBean = (DistrBean) adapterView.getSelectedItem();
                        getSelectedDistr(distrBean);
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> adapterView) {

                    }
                });
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
            Toast.makeText(InizioTurnoActivity.this, "CHIAMATA INFOCOLONNINA FALLITA", Toast.LENGTH_SHORT).show();
        }
    });
    requestQueue.add(stringRequest);
    }

    public void getSelectedDistr(DistrBean v){
        DistrBean distrBean = (DistrBean) spinner.getSelectedItem();
        setDistrData(distrBean);
    }

    private void setDistrData(DistrBean distrBean){
        String name = distrBean.getNomeDistributore();
        String litri = distrBean.getLitriColonnina();
        String id = distrBean.getIdDistributore();

        tvProgressivo.setText(litri);
        tvColonnina.setText(name);

        Toast.makeText(this, "Hai selezionato " + name +  "che ha litri: " + litri, Toast.LENGTH_LONG).show();
    }
}

答案 1 :(得分:0)

使用扩展

  trailing: Column(
    children: <Widget>[
      Icon(Icons.keyboard_arrow_right),
      Expanded(
        child: FlatButton(
          child: Text('text'),
          onPressed: () => {},
        ),
      )
    ],
  ),