// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
// This is a library that provides messages for a messages locale. All the
// messages from the main program should be duplicated here with the same
// function name.

// Ignore issues from commonly used lints in this file.
// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
// ignore_for_file:unused_import, file_names

import 'package:intl/intl.dart';
import 'package:intl/message_lookup_by_library.dart';

final messages = new MessageLookup();

typedef String MessageIfAbsent(String messageStr, List<dynamic> args);

class MessageLookup extends MessageLookupByLibrary {
  String get localeName => 'messages';

  static m0(value) => "You selected: \"${value}\"";

  final messages = _notInlinedMessages(_notInlinedMessages);
  static _notInlinedMessages(_) => <String, Function>{
        "A fashionable retail app":
            MessageLookupByLibrary.simpleMessage("A fashionable retail app"),
        "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogs and inline with padding":
            MessageLookupByLibrary.simpleMessage(
                "A flat button displays an ink splash on press but does not lift. Use flat buttons on toolbars, in dialogs and inline with padding"),
        "A floating action button is a circular icon button that hovers over content to promote a primary action in the application.":
            MessageLookupByLibrary.simpleMessage(
                "A floating action button is a circular icon button that hovers over content to promote a primary action in the application."),
        "A full screen dialog demo":
            MessageLookupByLibrary.simpleMessage("A full screen dialog demo"),
        "A personalized travel app":
            MessageLookupByLibrary.simpleMessage("A personalized travel app"),
        "A simple dialog offers the user a choice between several options. A simple dialog has an optional title that is displayed above the choices.":
            MessageLookupByLibrary.simpleMessage(
                "A simple dialog offers the user a choice between several options. A simple dialog has an optional title that is displayed above the choices."),
        "AGREE": MessageLookupByLibrary.simpleMessage("AGREE"),
        "AMBER": MessageLookupByLibrary.simpleMessage("AMBER"),
        "API Documentation":
            MessageLookupByLibrary.simpleMessage("API Documentation"),
        "Action Sheet": MessageLookupByLibrary.simpleMessage("Action Sheet"),
        "Add account": MessageLookupByLibrary.simpleMessage("Add account"),
        "Alert": MessageLookupByLibrary.simpleMessage("Alert"),
        "Alert Buttons Only":
            MessageLookupByLibrary.simpleMessage("Alert Buttons Only"),
        "Alert With Buttons":
            MessageLookupByLibrary.simpleMessage("Alert With Buttons"),
        "Alert With Title":
            MessageLookupByLibrary.simpleMessage("Alert With Title"),
        "Alerts": MessageLookupByLibrary.simpleMessage("Alerts"),
        "All of the predefined colors": MessageLookupByLibrary.simpleMessage(
            "All of the predefined colors"),
        "Allow": MessageLookupByLibrary.simpleMessage("Allow"),
        "Allow \"Maps\" to access your location while you are using the app?":
            MessageLookupByLibrary.simpleMessage(
                "Allow \"Maps\" to access your location while you are using the app?"),
        "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message, and a list of actions.":
            MessageLookupByLibrary.simpleMessage(
                "An action sheet is a specific style of alert that presents the user with a set of two or more choices related to the current context. An action sheet can have a title, an additional message, and a list of actions."),
        "An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title and an optional list of actions.":
            MessageLookupByLibrary.simpleMessage(
                "An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title and an optional list of actions."),
        "An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title, optional content, and an optional list of actions. The title is displayed above the content and the actions are displayed below the content.":
            MessageLookupByLibrary.simpleMessage(
                "An alert dialog informs the user about situations that require acknowledgement. An alert dialog has an optional title, optional content, and an optional list of actions. The title is displayed above the content and the actions are displayed below the content."),
        "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background.":
            MessageLookupByLibrary.simpleMessage(
                "An iOS-style button. It takes in text and/or an icon that fades out and in on touch. May optionally have a background."),
        "Apple Pie": MessageLookupByLibrary.simpleMessage("Apple Pie"),
        "BLUE": MessageLookupByLibrary.simpleMessage("BLUE"),
        "BLUE GREY": MessageLookupByLibrary.simpleMessage("BLUE GREY"),
        "BROWN": MessageLookupByLibrary.simpleMessage("BROWN"),
        "Buttons": MessageLookupByLibrary.simpleMessage("Buttons"),
        "CANCEL": MessageLookupByLibrary.simpleMessage("CANCEL"),
        "CYAN": MessageLookupByLibrary.simpleMessage("CYAN"),
        "Cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
        "Categories": MessageLookupByLibrary.simpleMessage("Categories"),
        "Cheesecake": MessageLookupByLibrary.simpleMessage("Cheesecake"),
        "Chocolate Brownie":
            MessageLookupByLibrary.simpleMessage("Chocolate Brownie"),
        "Code Sample": MessageLookupByLibrary.simpleMessage("Code Sample"),
        "Color and color swatch constants which represent Material Design\'s color palette.":
            MessageLookupByLibrary.simpleMessage(
                "Color and color swatch constants which represent Material Design\'s color palette."),
        "Colors": MessageLookupByLibrary.simpleMessage("Colors"),
        "Couldn\'t display URL:":
            MessageLookupByLibrary.simpleMessage("Couldn\'t display URL:"),
        "Create": MessageLookupByLibrary.simpleMessage("Create"),
        "DEEP ORANGE": MessageLookupByLibrary.simpleMessage("DEEP ORANGE"),
        "DEEP PURPLE": MessageLookupByLibrary.simpleMessage("DEEP PURPLE"),
        "DISABLED": MessageLookupByLibrary.simpleMessage("DISABLED"),
        "DISAGREE": MessageLookupByLibrary.simpleMessage("DISAGREE"),
        "DISCARD": MessageLookupByLibrary.simpleMessage("DISCARD"),
        "Dialogs": MessageLookupByLibrary.simpleMessage("Dialogs"),
        "Disabled": MessageLookupByLibrary.simpleMessage("Disabled"),
        "Discard": MessageLookupByLibrary.simpleMessage("Discard"),
        "Discard draft?":
            MessageLookupByLibrary.simpleMessage("Discard draft?"),
        "Don\'t Allow": MessageLookupByLibrary.simpleMessage("Don\'t Allow"),
        "ENABLED": MessageLookupByLibrary.simpleMessage("ENABLED"),
        "Enabled": MessageLookupByLibrary.simpleMessage("Enabled"),
        "Flat Button": MessageLookupByLibrary.simpleMessage("Flat Button"),
        "Flat, raised, outline, and more": MessageLookupByLibrary.simpleMessage(
            "Flat, raised, outline, and more"),
        "Floating Action Button":
            MessageLookupByLibrary.simpleMessage("Floating Action Button"),
        "Full Screen": MessageLookupByLibrary.simpleMessage("Full Screen"),
        "Full Screen Dialog":
            MessageLookupByLibrary.simpleMessage("Full Screen Dialog"),
        "Fullscreen": MessageLookupByLibrary.simpleMessage("Fullscreen"),
        "GREEN": MessageLookupByLibrary.simpleMessage("GREEN"),
        "GREY": MessageLookupByLibrary.simpleMessage("GREY"),
        "Gallery": MessageLookupByLibrary.simpleMessage("Gallery"),
        "GalleryLocalizations_dialogSelectedOption": m0,
        "INDIGO": MessageLookupByLibrary.simpleMessage("INDIGO"),
        "Info": MessageLookupByLibrary.simpleMessage("Info"),
        "LIGHT BLUE": MessageLookupByLibrary.simpleMessage("LIGHT BLUE"),
        "LIGHT GREEN": MessageLookupByLibrary.simpleMessage("LIGHT GREEN"),
        "LIME": MessageLookupByLibrary.simpleMessage("LIME"),
        "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running.":
            MessageLookupByLibrary.simpleMessage(
                "Let Google help apps determine location. This means sending anonymous location data to Google, even when no apps are running."),
        "ORANGE": MessageLookupByLibrary.simpleMessage("ORANGE"),
        "Options": MessageLookupByLibrary.simpleMessage("Options"),
        "Outline Button":
            MessageLookupByLibrary.simpleMessage("Outline Button"),
        "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action.":
            MessageLookupByLibrary.simpleMessage(
                "Outline buttons become opaque and elevate when pressed. They are often paired with raised buttons to indicate an alternative, secondary action."),
        "PINK": MessageLookupByLibrary.simpleMessage("PINK"),
        "PURPLE": MessageLookupByLibrary.simpleMessage("PURPLE"),
        "Please select your favorite type of dessert from the list below. Your selection will be used to customize the suggested list of eateries in your area.":
            MessageLookupByLibrary.simpleMessage(
                "Please select your favorite type of dessert from the list below. Your selection will be used to customize the suggested list of eateries in your area."),
        "RED": MessageLookupByLibrary.simpleMessage("RED"),
        "REFERENCE STYLES & MEDIA":
            MessageLookupByLibrary.simpleMessage("REFERENCE STYLES & MEDIA"),
        "Raised Button": MessageLookupByLibrary.simpleMessage("Raised Button"),
        "Raised buttons add dimension to mostly flat layouts. They emphasize functions on busy or wide spaces.":
            MessageLookupByLibrary.simpleMessage(
                "Raised buttons add dimension to mostly flat layouts. They emphasize functions on busy or wide spaces."),
        "SAVE": MessageLookupByLibrary.simpleMessage("SAVE"),
        "SHOW DIALOG": MessageLookupByLibrary.simpleMessage("SHOW DIALOG"),
        "Select Favorite Dessert":
            MessageLookupByLibrary.simpleMessage("Select Favorite Dessert"),
        "Set backup account":
            MessageLookupByLibrary.simpleMessage("Set backup account"),
        "Show Alert": MessageLookupByLibrary.simpleMessage("Show Alert"),
        "Simple": MessageLookupByLibrary.simpleMessage("Simple"),
        "Simple, alert, and fullscreen": MessageLookupByLibrary.simpleMessage(
            "Simple, alert, and fullscreen"),
        "TEAL": MessageLookupByLibrary.simpleMessage("TEAL"),
        "The fullscreenDialog property specifies whether the incoming page is a fullscreen modal dialog":
            MessageLookupByLibrary.simpleMessage(
                "The fullscreenDialog property specifies whether the incoming page is a fullscreen modal dialog"),
        "Tiramisu": MessageLookupByLibrary.simpleMessage("Tiramisu"),
        "Toggle Buttons":
            MessageLookupByLibrary.simpleMessage("Toggle Buttons"),
        "Toggle buttons can be used to group related options. To emphasize groups of related toggle buttons, a group should share a common container":
            MessageLookupByLibrary.simpleMessage(
                "Toggle buttons can be used to group related options. To emphasize groups of related toggle buttons, a group should share a common container"),
        "Use Google\'s location service?": MessageLookupByLibrary.simpleMessage(
            "Use Google\'s location service?"),
        "With Background":
            MessageLookupByLibrary.simpleMessage("With Background"),
        "YELLOW": MessageLookupByLibrary.simpleMessage("YELLOW"),
        "Your current location will be displayed on the map and used for directions, nearby search results, and estimated travel times.":
            MessageLookupByLibrary.simpleMessage(
                "Your current location will be displayed on the map and used for directions, nearby search results, and estimated travel times."),
        "iOS-style alert dialogs":
            MessageLookupByLibrary.simpleMessage("iOS-style alert dialogs"),
        "iOS-style buttons":
            MessageLookupByLibrary.simpleMessage("iOS-style buttons")
      };
}
