Как вызвать функцию только для одного виджета? - PullRequest
0 голосов
/ 15 апреля 2020

В основном я хочу вызвать функцию со значением индекса. Поэтому я должен назвать это в виджете. Но я не могу понять. Я не мог сделать это с initState, потому что нет никакого значения индекса в initState (насколько я знаю). Вот код:

List<TextEditingController> kolar =[
    TextEditingController(),
  ];

List<Column> todoos = [
    Column(),
  ];

  Future<void> _setStringFromSharedPref(int deger) async{
    final prefs = await SharedPreferences.getInstance();
    prefs.setString("laylay", kolar[deger].text);
    print(prefs.getString("laylay"));
  }

  Future<String> _getStringFromSharedPref() async{
    final prefs = await SharedPreferences.getInstance();
    return prefs.getString("laylay") ?? "hey hoy";
  }

void yapa(int deger){
    _getStringFromSharedPref().then((s){
      kolar[deger].text=s;
      print(s);
    });
  }

Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.tealAccent[700],
      appBar: AppBar(
        title: Text("To do"),
        centerTitle: true,
        backgroundColor: Colors.teal[700],
      ),
      body: ListView.builder(
          itemCount: todoos.length,
          itemBuilder: (context,index){
            return Column(
              mainAxisAlignment: MainAxisAlignment.start,
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: <Widget>[
                Slidable(
                  actionPane: SlidableDrawerActionPane(),
                  actionExtentRatio: 0.25,
                  child: Container(
                    height: 60,
                    child: Card(
                      color: Colors.teal[700],
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.start,
                        crossAxisAlignment: CrossAxisAlignment.stretch,
                        children: <Widget>[
                          TextField(
                            controller: kolar[index],
                            style: TextStyle(
                                fontSize: 20,
                                color: Colors.white
                            ),
                            onChanged: (text) {
                              _setStringFromSharedPref(index);
                            },
                          ),
                        ],
                      ),
                    ),
                  ),
                ),
              ],
            );
          }
      ),

Я хочу вызвать функцию yapa со значением индекса. Как я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...