簡體   English   中英

如何將提供者變量從一個視圖頁面傳遞到另一個視圖頁面以更改其值

[英]how to pass a provider variable from one view page to another to change its value

我有一個關於我想做的任務的問題。 我有一個表格,它有幾個步驟,分為幾個類,控制器的變量都放在一個提供者中,以便在驗證所有這些時集中所有這些信息,我的疑問如下。 我想通過創建一個我擁有的CheckboxListTile的類來分解我的代碼,我想創建一個這樣的類來生成它的實例,因為我的想法是制作一組相同類型的復選框,我的問題是如何我是否將變量從一個類的提供者傳遞到另一個類,並且在子類中能夠接收表單提供者的狀態,變量,並能夠在 onChanged 函數中修改變量的值CheckboxListTile 的。

我的想法是從這樣的事情開始:

Container(
      decoration: BoxDecoration(
          borderRadius: BorderRadius.circular(5),
          border: Border.all(color: Colors.black38)),
      constraints:
          const BoxConstraints(maxWidth: 160, minWidth: 100),
      child: CheckboxListTile(
          value: provider.variable,
          title: const Text('Lunes'),
          onChanged: (value) {
             provider.variable = !provider.variable;
             setState(() {});
          },
       ),
   ),

像這樣:

 CheckboxListTileDays(provider: provider,  variable: variable, text: 'Monday'),
 CheckboxListTileDays(provider: provider,  variable: variable, text: 'Tuesday '),
 CheckboxListTileDays(provider: provider,  variable: variable, text: 'Wednesday '),
 CheckboxListTileDays(provider: provider,  variable: variable, text: 'Thursday '),
 CheckboxListTileDays(provider: provider,  variable: variable, text: 'Friday'),

class CheckboxListTileDaysextends StatefulWidget {
    const CheckboxListTileDays({
         Key? key,
         required this.provider,
         required this.variable,
         required this.text,
     }) : super(key: key);

     final ClassProvider provider;
     final String variable;
     final String text;

     @override
     State<CheckboxListTileDays> createState() => _CheckboxListTileDaysState();
}

class _CheckboxListTileDaysState extends State<CheckboxListTileDays> {
     @override
     Widget build(BuildContext context) {
     return Container(
        decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(5),
            border: Border.all(color: Colors.black38)),
        constraints: const BoxConstraints(maxWidth: 160, minWidth: 100),
        child: CheckboxListTile(
            value: widget.provider.variable,
            title: Text(widget.text),
        onChanged: (value) {
            setState(() {});
        },
      ),
    );
  }
}

很明顯,我不確定這是否可以在現實中完成,也許不能完全那樣做,我想知道有關如何執行此操作的任何信息或與使用提供者的義務類似的信息。

沒有理由將提供者或值傳遞給孩子,只需讀取一個值,例如通過使用擴展方法。

final String variable = context.read<ClassProvider>().variable;
...
final String variable = context.watch<ClassProvider>().variable;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM