मेरे स्पंदन ऐप के लिए, मुझे कैमरा फीड के लिए अनुमति का अनुरोध करना होगा। इसके लिए मैं इसके लिए allow_handler मॉड्यूल का उपयोग करता हूं।

नीचे दिए गए कोड को कॉल करने और अनुमति स्वीकार करने के बाद उसी पृष्ठ का एक नया उदाहरण बनाया जाता है और पुराना पृष्ठ अभी भी मौजूद है। मैं सिस्टम को नया पेज बनाने से कैसे रोक सकता हूं?

 Future<void> askPermissionBeforeHand() async{
    final PermissionHandler _permissionHandler = PermissionHandler();
    final permissionStatus = await _permissionHandler.checkPermissionStatus(PermissionGroup.camera);
    if (permissionStatus != PermissionStatus.granted) {
      var result = await _permissionHandler.requestPermissions([PermissionGroup.camera]);
    }
  }

    import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:zorg_nl/core/utils/ui_utils.dart';
import 'package:zorg_nl/l10n/ionicons.dart';
import 'package:zorg_nl/locator.dart';
import 'package:zorg_share/colors.dart';
import 'package:zorg_share/components/molecules/header_icon_molecule.dart';
import 'package:zorg_nl/ui/widgets/wp_rounded_button.dart';

class RegistrationValidationInfo extends StatelessWidget {
  final GlobalKey<ScaffoldState> scaffoldKey = GlobalKey();

  void onFindHealthCareProviders(BuildContext context) {
    Locator.analytics().logSelectContent(contentType: 'button', itemId: 'registration_search_providers');
    UiUtils.navigateByTag(context: context,pushPath: '/providers');
  }

  Future<void> onHelp() async {
    await UiUtils.sendHelpAnalytics('registration_provider');
    await UiUtils.openWebsite('http://www.zorg.nl');
  }

  Future<void> askPermissionBeforeHand() async{
    final PermissionHandler _permissionHandler = PermissionHandler();
    final permissionStatus = await _permissionHandler.checkPermissionStatus(PermissionGroup.camera);
    if (permissionStatus != PermissionStatus.granted) {
      var result = await _permissionHandler.requestPermissions([PermissionGroup.camera]);
    }
  }

  @override
  Widget build(BuildContext context) {
    Locator.analytics().setCurrentScreen(screenName: 'VerifyHealthCareProvider');
    askPermissionBeforeHand();
    return Scaffold(
      backgroundColor: colorWhite,
      key: scaffoldKey,
      resizeToAvoidBottomInset: false,
      body: SafeArea(minimum: EdgeInsets.symmetric(horizontal: 16),
          child: Stack(children: <Widget>[
            Positioned(bottom: 10,
                left: 0, right: 0,child: Column(children: <Widget>[
              materialCareButton(context,
                  text: 'register_provider_care_provider',
                  iconData: IonIcons.ios_navigate,
                  color: colorPrimaryColor,
                  onPressed:() => onFindHealthCareProviders(context)),
              Container(height: 5),
              materialCareButton(context,
                  text: 'generic_need_help',
                  textColor: colorPrimaryColor,
                  onPressed: onHelp),
            ])),
            const Padding(
              padding: EdgeInsets.fromLTRB(16, 40, 16, 0),
              child: HeaderIcon(
                title: 'register_provider_title',
                subHeader: 'register_provider_sub_header',
                icon: IconData(0xe801, fontFamily: 'material'), // policy
              ),
            ),
          ],)
      ),
    );
  }
}
0
quantum apps 20 जिंदा 2020, 17:49

1 उत्तर

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

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

इसका समाधान मेरे अंतिम पृष्ठ को पॉप करना और बाद में नए पृष्ठ को पुश करना था। मेरे मामले में, मुझे अब पृष्ठ की आवश्यकता नहीं थी। यदि आपको अभी भी पृष्ठ की आवश्यकता है तो आप श्रोता को WidgetsBindingObserver पर हटा सकते हैं और पृष्ठ पर वापस आने पर उसे पुनः संलग्न कर सकते हैं।

0
quantum apps 19 फरवरी 2020, 08:14