इसलिए मूल रूप से मैं कुछ दिनों से कोशिश कर रहा हूं कि जब उपयोगकर्ता ListView पर स्वाइप करते हैं, तो वे ListView के शीर्ष पर पहुंचने पर एक मोडल बॉटम शीट को बंद कर सकते हैं। हालांकि, जब वे सूची में स्वाइप करते हैं तो विजेट्स रजिस्टर को देखते हैं जैसे कि मैं सूची दृश्य पर स्क्रॉल करने का प्रयास कर रहा हूं। क्या ListView के लिए एक मोडल बॉटम शीट को बंद करने के लिए एक भौतिकी प्रकार है जब शीर्ष पर या इसके लिए एक इग्नोर पॉइंटर सेट करने का एक अलग तरीका है? मैं यही लेकर आया हूं और मुझे आशा है कि मैंने खुद को पर्याप्त रूप से समझाया है कि यह समस्या समझ में आ गई है।

import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';

class ModalSheet extends StatefulWidget {
  @override
  _ModalSheetState createState() => _ModalSheetState();
}

ScrollController _scrollController = ScrollController();
bool close = false;

class _ModalSheetState extends State<ModalSheet> {
  @override
  void initState() {
    super.initState();
    _scrollController.addListener(() {
      if (_scrollController.position.pixels < 1) {
        if (_scrollController.position.userScrollDirection ==
            ScrollDirection.forward) {
          setState(() {
            close = true;
          });
        } else {
          setState(() {
            close = false;
          });
        }
      } else {
        setState(() {
          close = false;
        });
      }
      print(_scrollController.position.pixels);
      print(_scrollController.position.userScrollDirection);
      print(close);
      // print(close);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: Column(
        children: [
          Flexible(
            child: IgnorePointer(
              ignoring: close,
              child: ListView.builder(
                controller: _scrollController,
                physics: BouncingScrollPhysics(),
                itemBuilder: (context, index) {
                  return ListTile(
                    title: Text('tile: ${index + 1}'),
                  );
                },
              ),
            ),
          ),
        ],
      ),
    );
  }
}

संपादित करें: इस पैकेज का उपयोग करने के लिए नीचे दिए गए पैकेज सुझाव के लिए @ LearningJS888 को धन्यवाद! बहुत सराहना की

3
gregp 28 सितंबर 2020, 22:48

1 उत्तर

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

क्या आप विस्तार से बता सकते हैं कि आप वास्तव में क्या करने की कोशिश कर रहे हैं? ModalBottomSheet को बंद करने का एक सामान्य तरीका Navigator.pop(context) है।

0
swedishcheef 28 सितंबर 2020, 20:04