为不同的小部件分配密钥的最佳实践?

时间:2019-05-09 10:18:27

标签: dart flutter

我一直在寻找使用单独的键来控制页面中的每个小部件。有人可以建议我这样做的最佳方法吗? 我尝试过像这样的表单

final formKey = GlobalKey<FormState>();
Form(
key: formKey,
),

但是在使用Container,Card和其他小部件时,我感到困惑。 有什么可以建议我应该遵循的内容以及在哪里?

1 个答案:

答案 0 :(得分:0)

您不需要Container,Card或与。无关的任何其他小部件的formKey。

如果创建Form Widget,则需要给它一个TextFormField子级,该子级继承FormState。

问题就在这里,可能会有多个TextFormField小部件,因此,您无需为每个TextFormField逐一创建和处理它们,而是创建Form Widget来对TextFormFields进行分组,然后分配一次formKey并完全使用它

您的formKey与其他类型的小部件无关。

解释程序代码:

public void retrofitView() {
    ProgressBar progressBar;
    progressBar = findViewById(R.id.ProgressBar_MainActivity);
    DoubleBounce doubleBounce = new DoubleBounce();
    progressBar.setIndeterminateDrawable(doubleBounce);
    progressBar.setVisibility(View.VISIBLE);
    Call<List<Restaurants>> call = RetrofitClient.apiService.getRestaurants();
    call.enqueue(new Callback<List<Restaurants>>() {
        @Override
        public void onResponse(Call<List<Restaurants>> call, Response<List<Restaurants>> response) {
            progressBar.setVisibility(View.GONE); //This will make your progress bar visibility off after data load successfully
            restaurantRecyclerInit(response.body());
        }

        @Override
        public void onFailure(Call<List<Restaurants>> call, Throwable t) {
            progressBar.setVisibility(View.GONE); // Same here also
            Toast.makeText(MainActivity.this, "ddd", Toast.LENGTH_SHORT).show();
        }
    });
}