admin管理员组

文章数量:1023076

When keyboard is closed then my snackbar shows perfectly but when it opened its not showing properly in ios


Future<void> _login() async {
  if (!_formKey.currentState!.validate()) return;

  final request = LoginRequest(
    countryCode: "+91",
    phoneNumber: _phoneNumberController.text,
  );

  try {
    final response = await http.post(
      Uri.parse('xxxxxx'),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(request.toJson()),
    );

    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');

    if (response.statusCode == 200 || response.statusCode == 201) {
      final data = jsonDecode(response.body);
      final loginResponse = LoginResponse.fromJson(data);
        await _saveUserData('Your Name', _phoneNumberController.text); 

      if (loginResponse.message != '' && loginResponse.message.isNotEmpty) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text(loginResponse.message)),
        );

        Navigator.of(context).push(
          MaterialPageRoute(
            builder: (context) =>  OtpScreen(
              phoneNumber: _phoneNumberController.text,
              countryCode: '+91',
            ),
          ),
        );
      } else {
        ScaffoldMessenger.of(context).showSnackBar(
        const  SnackBar(content: Text('Login successful, but no message provided')),
        );
      }
    } else {
      final errorData = jsonDecode(response.body);
      final errorMessage = errorData['message'] ?? 'Failed to sign up';
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text(errorMessage)),
      );
    }
  } catch (e) {
    print('Error: $e');
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(content: Text('An error occurred: $e')),
    );
  }
}

I want when keyboard opens then also the snackbar shows properly and i have seen many soluitons for android but not in ios

When keyboard is closed then my snackbar shows perfectly but when it opened its not showing properly in ios


Future<void> _login() async {
  if (!_formKey.currentState!.validate()) return;

  final request = LoginRequest(
    countryCode: "+91",
    phoneNumber: _phoneNumberController.text,
  );

  try {
    final response = await http.post(
      Uri.parse('xxxxxx'),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(request.toJson()),
    );

    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');

    if (response.statusCode == 200 || response.statusCode == 201) {
      final data = jsonDecode(response.body);
      final loginResponse = LoginResponse.fromJson(data);
        await _saveUserData('Your Name', _phoneNumberController.text); 

      if (loginResponse.message != '' && loginResponse.message.isNotEmpty) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text(loginResponse.message)),
        );

        Navigator.of(context).push(
          MaterialPageRoute(
            builder: (context) =>  OtpScreen(
              phoneNumber: _phoneNumberController.text,
              countryCode: '+91',
            ),
          ),
        );
      } else {
        ScaffoldMessenger.of(context).showSnackBar(
        const  SnackBar(content: Text('Login successful, but no message provided')),
        );
      }
    } else {
      final errorData = jsonDecode(response.body);
      final errorMessage = errorData['message'] ?? 'Failed to sign up';
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text(errorMessage)),
      );
    }
  } catch (e) {
    print('Error: $e');
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(content: Text('An error occurred: $e')),
    );
  }
}

I want when keyboard opens then also the snackbar shows properly and i have seen many soluitons for android but not in ios

Share Improve this question edited Nov 19, 2024 at 10:43 Tanu Purohit asked Nov 19, 2024 at 9:13 Tanu PurohitTanu Purohit 1231 silver badge8 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

Please add this SnackBarBehavior.floating, like this:

  SnackBar(
    content: Text(loginResponse.message),
    behavior: SnackBarBehavior.floating, // Make the snackbar float above other content
  ),

When keyboard is closed then my snackbar shows perfectly but when it opened its not showing properly in ios


Future<void> _login() async {
  if (!_formKey.currentState!.validate()) return;

  final request = LoginRequest(
    countryCode: "+91",
    phoneNumber: _phoneNumberController.text,
  );

  try {
    final response = await http.post(
      Uri.parse('xxxxxx'),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(request.toJson()),
    );

    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');

    if (response.statusCode == 200 || response.statusCode == 201) {
      final data = jsonDecode(response.body);
      final loginResponse = LoginResponse.fromJson(data);
        await _saveUserData('Your Name', _phoneNumberController.text); 

      if (loginResponse.message != '' && loginResponse.message.isNotEmpty) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text(loginResponse.message)),
        );

        Navigator.of(context).push(
          MaterialPageRoute(
            builder: (context) =>  OtpScreen(
              phoneNumber: _phoneNumberController.text,
              countryCode: '+91',
            ),
          ),
        );
      } else {
        ScaffoldMessenger.of(context).showSnackBar(
        const  SnackBar(content: Text('Login successful, but no message provided')),
        );
      }
    } else {
      final errorData = jsonDecode(response.body);
      final errorMessage = errorData['message'] ?? 'Failed to sign up';
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text(errorMessage)),
      );
    }
  } catch (e) {
    print('Error: $e');
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(content: Text('An error occurred: $e')),
    );
  }
}

I want when keyboard opens then also the snackbar shows properly and i have seen many soluitons for android but not in ios

When keyboard is closed then my snackbar shows perfectly but when it opened its not showing properly in ios


Future<void> _login() async {
  if (!_formKey.currentState!.validate()) return;

  final request = LoginRequest(
    countryCode: "+91",
    phoneNumber: _phoneNumberController.text,
  );

  try {
    final response = await http.post(
      Uri.parse('xxxxxx'),
      headers: {'Content-Type': 'application/json'},
      body: jsonEncode(request.toJson()),
    );

    print('Response status: ${response.statusCode}');
    print('Response body: ${response.body}');

    if (response.statusCode == 200 || response.statusCode == 201) {
      final data = jsonDecode(response.body);
      final loginResponse = LoginResponse.fromJson(data);
        await _saveUserData('Your Name', _phoneNumberController.text); 

      if (loginResponse.message != '' && loginResponse.message.isNotEmpty) {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text(loginResponse.message)),
        );

        Navigator.of(context).push(
          MaterialPageRoute(
            builder: (context) =>  OtpScreen(
              phoneNumber: _phoneNumberController.text,
              countryCode: '+91',
            ),
          ),
        );
      } else {
        ScaffoldMessenger.of(context).showSnackBar(
        const  SnackBar(content: Text('Login successful, but no message provided')),
        );
      }
    } else {
      final errorData = jsonDecode(response.body);
      final errorMessage = errorData['message'] ?? 'Failed to sign up';
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text(errorMessage)),
      );
    }
  } catch (e) {
    print('Error: $e');
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(content: Text('An error occurred: $e')),
    );
  }
}

I want when keyboard opens then also the snackbar shows properly and i have seen many soluitons for android but not in ios

Share Improve this question edited Nov 19, 2024 at 10:43 Tanu Purohit asked Nov 19, 2024 at 9:13 Tanu PurohitTanu Purohit 1231 silver badge8 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 0

Please add this SnackBarBehavior.floating, like this:

  SnackBar(
    content: Text(loginResponse.message),
    behavior: SnackBarBehavior.floating, // Make the snackbar float above other content
  ),

本文标签: flutterShow snackbar in ios device when keyboard is openStack Overflow