leading: GestureDetector(
    behavior: HitTestBehavior.translucent,
    onTap: () {
       // There I want to change title, background color etc
    },
  ),
  title: Text('title'),
  dense: false,
),

मैं सूची टाइल के गुणों को अपने स्वयं के ऑनटैप से बदलना चाहता हूं ()

0
mannan azhar 17 सितंबर 2020, 10:05

2 जवाब

सबसे बढ़िया उत्तर

आप नीचे पेस्ट रन पूरा कोड कॉपी कर सकते हैं
आप StatefulWidget का उपयोग कर सकते हैं और setState को onTap
के अंदर कॉल कर सकते हैं सांकेतिक टुकड़ा

class _ListTileCustomState extends State<ListTileCustom> {
  String _title = "title";
  Color _color = Colors.blue;

  @override
  Widget build(BuildContext context) {
    return ListTile(
      tileColor: _color,
      leading: GestureDetector(
          behavior: HitTestBehavior.translucent,
          onTap: () {
            setState(() {
              _title = "changed";
              _color = Colors.red;
            });
          },
          child: Icon(Icons.add)),
      title: Text(_title),
      dense: false,
    );
  }
}

काम कर रहे डेमो

enter image description here

पूरा कोड

import 'package:flutter/material.dart';

class ListTileCustom extends StatefulWidget {
  @override
  _ListTileCustomState createState() => _ListTileCustomState();
}

class _ListTileCustomState extends State<ListTileCustom> {
  String _title = "title";
  Color _color = Colors.blue;

  @override
  Widget build(BuildContext context) {
    return ListTile(
      tileColor: _color,
      leading: GestureDetector(
          behavior: HitTestBehavior.translucent,
          onTap: () {
            setState(() {
              _title = "changed";
              _color = Colors.red;
            });
          },
          child: Icon(Icons.add)),
      title: Text(_title),
      dense: false,
    );
  }
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ListTileCustom(),
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}
1
chunhunghan 17 सितंबर 2020, 10:28

आप build एक विधि से पहले एक चर को परिभाषित कर सकते हैं और उस चर का उपयोग सूची के शीर्षक के लिए कर सकते हैं और जब आप टैप करते हैं तो setState का उपयोग करके राज्य को बदल देते हैं और यह आपकी सूची का शीर्षक बदल देगा।

leading: GestureDetector(
    behavior: HitTestBehavior.translucent,
    onTap: () {
       setState((){
          title="your text"
       });
    },
  ),
  title: Text(title),
  dense: false,
),

यहाँ शीर्षक परिवर्तनशील है और ListTile के पास onTap की संपत्ति भी है

0
Abhishek Ghaskata 17 सितंबर 2020, 10:27