Liu Yanbo пре 7 година
родитељ
комит
ab71d37439
7 измењених фајлова са 345 додато и 399 уклоњено
  1. 161 112
      .idea/workspace.xml
  2. 6 14
      example/lib/main.dart
  3. 1 1
      example/pubspec.lock
  4. 35 68
      lib/flutter_datetime_picker.dart
  5. 17 183
      lib/src/date_format.dart
  6. 14 21
      lib/src/date_model.dart
  7. 111 0
      lib/src/i18n_model.dart

+ 161 - 112
.idea/workspace.xml

@@ -2,9 +2,13 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="4ca5d027-8e00-4d4c-ab69-69171c049d48" name="Default" comment="">
+      <change beforePath="" afterPath="$PROJECT_DIR$/lib/src/i18n_model.dart" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
+      <change beforePath="$PROJECT_DIR$/example/lib/main.dart" afterPath="$PROJECT_DIR$/example/lib/main.dart" />
       <change beforePath="$PROJECT_DIR$/example/pubspec.lock" afterPath="$PROJECT_DIR$/example/pubspec.lock" />
-      <change beforePath="$PROJECT_DIR$/pubspec.yaml" afterPath="$PROJECT_DIR$/pubspec.yaml" />
+      <change beforePath="$PROJECT_DIR$/lib/flutter_datetime_picker.dart" afterPath="$PROJECT_DIR$/lib/flutter_datetime_picker.dart" />
+      <change beforePath="$PROJECT_DIR$/lib/src/dateModel.dart" afterPath="$PROJECT_DIR$/lib/src/date_model.dart" />
+      <change beforePath="$PROJECT_DIR$/lib/src/date_format.dart" afterPath="$PROJECT_DIR$/lib/src/date_format.dart" />
     </list>
     <ignored path="$PROJECT_DIR$/.dart_tool/" />
     <ignored path="$PROJECT_DIR$/.idea/" />
@@ -22,8 +26,8 @@
       <file leaf-file-name="main.dart" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/example/lib/main.dart">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="1166">
-              <caret line="54" column="30" lean-forward="false" selection-start-line="54" selection-start-column="30" selection-end-line="54" selection-end-column="30" />
+            <state relative-caret-position="288">
+              <caret line="43" column="42" lean-forward="false" selection-start-line="43" selection-start-column="42" selection-end-line="43" selection-end-column="42" />
               <folding />
             </state>
           </provider>
@@ -32,38 +36,20 @@
       <file leaf-file-name="flutter_datetime_picker.dart" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/lib/flutter_datetime_picker.dart">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="311">
-              <caret line="277" column="41" lean-forward="false" selection-start-line="277" selection-start-column="41" selection-end-line="277" selection-end-column="41" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="picker.dart" pinned="false" current-in-tab="false">
-        <entry file="file://$USER_HOME$/flutter/packages/flutter/lib/src/cupertino/picker.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="792">
-              <caret line="41" column="76" lean-forward="false" selection-start-line="41" selection-start-column="76" selection-end-line="41" selection-end-column="76" />
-              <folding />
+            <state relative-caret-position="1439">
+              <caret line="71" column="29" lean-forward="false" selection-start-line="71" selection-start-column="29" selection-end-line="71" selection-end-column="29" />
+              <folding>
+                <element signature="e#34#74#0" expanded="true" />
+              </folding>
             </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="list_wheel_scroll_view.dart" pinned="false" current-in-tab="false">
-        <entry file="file://$USER_HOME$/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart">
-          <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="15224">
-              <caret line="712" column="3" lean-forward="false" selection-start-line="712" selection-start-column="3" selection-end-line="712" selection-end-column="3" />
-              <folding />
-            </state>
-          </provider>
-        </entry>
-      </file>
-      <file leaf-file-name="pubspec.yaml" pinned="false" current-in-tab="true">
+      <file leaf-file-name="pubspec.yaml" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/pubspec.yaml">
           <provider selected="true" editor-type-id="text-editor">
             <state relative-caret-position="88">
-              <caret line="4" column="60" lean-forward="true" selection-start-line="4" selection-start-column="60" selection-end-line="4" selection-end-column="60" />
+              <caret line="4" column="60" lean-forward="false" selection-start-line="4" selection-start-column="60" selection-end-line="4" selection-end-column="60" />
               <folding />
             </state>
           </provider>
@@ -89,7 +75,7 @@
           <provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]">
             <state split_layout="SPLIT">
               <first_editor relative-caret-position="286">
-                <caret line="13" column="4" lean-forward="true" selection-start-line="13" selection-start-column="4" selection-end-line="13" selection-end-column="9" />
+                <caret line="13" column="4" lean-forward="false" selection-start-line="13" selection-start-column="4" selection-end-line="13" selection-end-column="9" />
                 <folding />
               </first_editor>
               <second_editor>
@@ -99,18 +85,23 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="screen_datetime_chinese.png" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/screen_datetime_chinese.png">
-          <provider selected="true" editor-type-id="images">
-            <state />
+      <file leaf-file-name="date_model.dart" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/lib/src/date_model.dart">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="1518">
+              <caret line="69" column="3" lean-forward="false" selection-start-line="69" selection-start-column="3" selection-end-line="69" selection-end-column="3" />
+              <folding>
+                <element signature="e#0#62#0" expanded="true" />
+              </folding>
+            </state>
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="dateModel.dart" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/lib/src/dateModel.dart">
+      <file leaf-file-name="i18n_model.dart" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/lib/src/i18n_model.dart">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-228">
-              <caret line="180" column="39" lean-forward="false" selection-start-line="180" selection-start-column="39" selection-end-line="180" selection-end-column="39" />
+            <state relative-caret-position="-158">
+              <caret line="52" column="9" lean-forward="false" selection-start-line="52" selection-start-column="9" selection-end-line="52" selection-end-column="9" />
               <folding />
             </state>
           </provider>
@@ -119,8 +110,28 @@
       <file leaf-file-name="date_format.dart" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/lib/src/date_format.dart">
           <provider selected="true" editor-type-id="text-editor">
-            <state relative-caret-position="-7626">
-              <caret line="11" column="27" lean-forward="false" selection-start-line="11" selection-start-column="27" selection-end-line="11" selection-end-column="27" />
+            <state relative-caret-position="671">
+              <caret line="275" column="61" lean-forward="false" selection-start-line="275" selection-start-column="61" selection-end-line="275" selection-end-column="61" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="date_time.dart" pinned="false" current-in-tab="true">
+        <entry file="file://$USER_HOME$/flutter/bin/cache/pkg/sky_engine/lib/core/date_time.dart">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="306">
+              <caret line="849" column="19" lean-forward="false" selection-start-line="849" selection-start-column="19" selection-end-line="849" selection-end-column="19" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="object.dart" pinned="false" current-in-tab="false">
+        <entry file="file://$USER_HOME$/flutter/packages/flutter/lib/src/rendering/object.dart">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="310">
+              <caret line="1634" column="6" lean-forward="false" selection-start-line="1634" selection-start-column="6" selection-end-line="1634" selection-end-column="6" />
               <folding />
             </state>
           </provider>
@@ -149,7 +160,13 @@
       <find>stringAtIndexCB</find>
       <find>FixedExtentMetrics</find>
       <find>_renderColumnView</find>
+      <find>dayShortNL</find>
+      <find>String locale</find>
+      <find>locale == 'nl'</find>
     </findStrings>
+    <replaceStrings>
+      <replace>locale == LocaleType.nl</replace>
+    </replaceStrings>
   </component>
   <component name="Git.Settings">
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
@@ -167,14 +184,16 @@
         <option value="$PROJECT_DIR$/example/test/widget_test.dart" />
         <option value="$PROJECT_DIR$/lib/dateModel.dart" />
         <option value="$PROJECT_DIR$/lib/date_format.dart" />
-        <option value="$PROJECT_DIR$/lib/src/date_format.dart" />
-        <option value="$PROJECT_DIR$/example/lib/main.dart" />
         <option value="$PROJECT_DIR$/README.md" />
         <option value="$USER_HOME$/flutter/packages/flutter/lib/src/widgets/list_wheel_scroll_view.dart" />
-        <option value="$PROJECT_DIR$/lib/src/dateModel.dart" />
         <option value="$PROJECT_DIR$/CHANGELOG.md" />
-        <option value="$PROJECT_DIR$/lib/flutter_datetime_picker.dart" />
         <option value="$PROJECT_DIR$/pubspec.yaml" />
+        <option value="$PROJECT_DIR$/lib/src/i18nModel.dart" />
+        <option value="$PROJECT_DIR$/lib/flutter_datetime_picker.dart" />
+        <option value="$PROJECT_DIR$/example/lib/main.dart" />
+        <option value="$PROJECT_DIR$/lib/src/dateModel.dart" />
+        <option value="$PROJECT_DIR$/lib/src/i18n_model.dart" />
+        <option value="$PROJECT_DIR$/lib/src/date_format.dart" />
       </list>
     </option>
   </component>
@@ -475,21 +494,30 @@
       <option name="project" value="LOCAL" />
       <updated>1536637356924</updated>
     </task>
-    <option name="localTasksCounter" value="15" />
+    <task id="LOCAL-00015" summary="1.0.2 change version">
+      <created>1538039700351</created>
+      <option name="number" value="00015" />
+      <option name="presentableId" value="LOCAL-00015" />
+      <option name="project" value="LOCAL" />
+      <updated>1538039700351</updated>
+    </task>
+    <option name="localTasksCounter" value="16" />
     <servers />
   </component>
   <component name="ToolWindowManager">
     <frame x="0" y="23" width="2560" height="1417" extended-state="0" />
+    <editor active="true" />
     <layout>
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.034588777" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
       <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
       <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.1360492" sideWeight="0.5015949" order="7" side_tool="true" content_ui="tabs" />
       <window_info id="Dart Analysis" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.1360492" sideWeight="0.4984051" order="8" side_tool="false" content_ui="tabs" />
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.26364335" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32974634" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3520369" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
-      <window_info id="Terminal" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.23981553" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.039200615" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
       <window_info id="Flutter Outline" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.18221691" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
       <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
@@ -512,7 +540,6 @@
       <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
       <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.26210606" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
       <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
-      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.31975403" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
       <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
       <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
       <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
@@ -537,31 +564,23 @@
     <MESSAGE value="fix" />
     <MESSAGE value="sync" />
     <MESSAGE value="1.0.1 fix day bug when changing month" />
-    <option name="LAST_COMMIT_MESSAGE" value="1.0.1 fix day bug when changing month" />
+    <MESSAGE value="1.0.2 change version" />
+    <option name="LAST_COMMIT_MESSAGE" value="1.0.2 change version" />
   </component>
   <component name="XDebuggerManager">
     <breakpoint-manager>
-      <option name="time" value="12" />
+      <breakpoints>
+        <line-breakpoint enabled="true" type="Dart">
+          <url>file://$PROJECT_DIR$/lib/src/date_format.dart</url>
+          <line>247</line>
+          <option name="timeStamp" value="13" />
+        </line-breakpoint>
+      </breakpoints>
+      <option name="time" value="14" />
     </breakpoint-manager>
     <watches-manager />
   </component>
   <component name="editorHistoryManager">
-    <entry file="file://$PROJECT_DIR$/lib/src/dateModel.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="589">
-          <caret line="31" column="9" lean-forward="false" selection-start-line="31" selection-start-column="9" selection-end-line="31" selection-end-column="9" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/date_format.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="4788">
-          <caret line="252" column="32" lean-forward="true" selection-start-line="252" selection-start-column="32" selection-end-line="252" selection-end-column="32" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/CHANGELOG.md">
       <provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]">
         <state split_layout="SPLIT">
@@ -587,7 +606,9 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="266">
           <caret line="17" column="38" lean-forward="false" selection-start-line="17" selection-start-column="38" selection-end-line="17" selection-end-column="38" />
-          <folding />
+          <folding>
+            <element signature="e#34#74#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
@@ -654,11 +675,13 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/dateModel.dart">
+    <entry file="file://$PROJECT_DIR$/lib/src/date_model.dart">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="4693">
           <caret line="247" column="3" lean-forward="true" selection-start-line="247" selection-start-column="3" selection-end-line="247" selection-end-column="3" />
-          <folding />
+          <folding>
+            <element signature="e#0#62#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
@@ -681,15 +704,19 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="4959">
           <caret line="262" column="0" lean-forward="false" selection-start-line="262" selection-start-column="0" selection-end-line="276" selection-end-column="3" />
-          <folding />
+          <folding>
+            <element signature="e#34#74#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/dateModel.dart">
+    <entry file="file://$PROJECT_DIR$/lib/src/date_model.dart">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="741">
           <caret line="39" column="34" lean-forward="true" selection-start-line="39" selection-start-column="34" selection-end-line="39" selection-end-column="34" />
-          <folding />
+          <folding>
+            <element signature="e#0#62#0" expanded="true" />
+          </folding>
         </state>
       </provider>
     </entry>
@@ -757,13 +784,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$USER_HOME$/flutter/bin/cache/pkg/sky_engine/lib/core/date_time.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="256">
-          <caret line="179" column="2" lean-forward="false" selection-start-line="179" selection-start-column="2" selection-end-line="179" selection-end-column="2" />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/example/test/widget_test.dart">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="228">
@@ -798,6 +818,7 @@
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="247">
           <caret line="15" column="11" lean-forward="false" selection-start-line="15" selection-start-column="11" selection-end-line="15" selection-end-column="11" />
+          <folding />
         </state>
       </provider>
     </entry>
@@ -851,14 +872,6 @@
         <state />
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/example/lib/main.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="1166">
-          <caret line="54" column="30" lean-forward="false" selection-start-line="54" selection-start-column="30" selection-end-line="54" selection-end-column="30" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$USER_HOME$/flutter/packages/flutter/lib/src/cupertino/picker.dart">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="792">
@@ -875,35 +888,11 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/lib/flutter_datetime_picker.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="311">
-          <caret line="277" column="41" lean-forward="false" selection-start-line="277" selection-start-column="41" selection-end-line="277" selection-end-column="41" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/date_format.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-7626">
-          <caret line="11" column="27" lean-forward="false" selection-start-line="11" selection-start-column="27" selection-end-line="11" selection-end-column="27" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/lib/src/dateModel.dart">
-      <provider selected="true" editor-type-id="text-editor">
-        <state relative-caret-position="-228">
-          <caret line="180" column="39" lean-forward="false" selection-start-line="180" selection-start-column="39" selection-end-line="180" selection-end-column="39" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/CHANGELOG.md">
       <provider selected="true" editor-type-id="split-provider[text-editor;MarkdownPreviewEditor]">
         <state split_layout="SPLIT">
           <first_editor relative-caret-position="286">
-            <caret line="13" column="4" lean-forward="true" selection-start-line="13" selection-start-column="4" selection-end-line="13" selection-end-column="9" />
+            <caret line="13" column="4" lean-forward="false" selection-start-line="13" selection-start-column="4" selection-end-line="13" selection-end-column="9" />
             <folding />
           </first_editor>
           <second_editor>
@@ -928,7 +917,67 @@
     <entry file="file://$PROJECT_DIR$/pubspec.yaml">
       <provider selected="true" editor-type-id="text-editor">
         <state relative-caret-position="88">
-          <caret line="4" column="60" lean-forward="true" selection-start-line="4" selection-start-column="60" selection-end-line="4" selection-end-column="60" />
+          <caret line="4" column="60" lean-forward="false" selection-start-line="4" selection-start-column="60" selection-end-line="4" selection-end-column="60" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/example/lib/main.dart">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="288">
+          <caret line="43" column="42" lean-forward="false" selection-start-line="43" selection-start-column="42" selection-end-line="43" selection-end-column="42" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/src/date_model.dart">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1518">
+          <caret line="69" column="3" lean-forward="false" selection-start-line="69" selection-start-column="3" selection-end-line="69" selection-end-column="3" />
+          <folding>
+            <element signature="e#0#62#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/flutter_datetime_picker.dart">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1439">
+          <caret line="71" column="29" lean-forward="false" selection-start-line="71" selection-start-column="29" selection-end-line="71" selection-end-column="29" />
+          <folding>
+            <element signature="e#34#74#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/src/i18n_model.dart">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="-158">
+          <caret line="52" column="9" lean-forward="false" selection-start-line="52" selection-start-column="9" selection-end-line="52" selection-end-column="9" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/flutter/packages/flutter/lib/src/rendering/object.dart">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="310">
+          <caret line="1634" column="6" lean-forward="false" selection-start-line="1634" selection-start-column="6" selection-end-line="1634" selection-end-column="6" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/lib/src/date_format.dart">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="671">
+          <caret line="275" column="61" lean-forward="false" selection-start-line="275" selection-start-column="61" selection-end-line="275" selection-end-column="61" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$USER_HOME$/flutter/bin/cache/pkg/sky_engine/lib/core/date_time.dart">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="306">
+          <caret line="849" column="19" lean-forward="false" selection-start-line="849" selection-start-column="19" selection-end-line="849" selection-end-column="19" />
           <folding />
         </state>
       </provider>

+ 6 - 14
example/lib/main.dart

@@ -37,14 +37,11 @@ class HomePage extends StatelessWidget {
           children: <Widget>[
             FlatButton(
                 onPressed: () {
-                  DatePicker.showDatePicker(context, showTitleActions: true,
-                      onChanged: (date) {
+                  DatePicker.showDatePicker(context, showTitleActions: true, onChanged: (date) {
                     print('change $date');
                   }, onConfirm: (date) {
                     print('confirm $date');
-                  },
-                      currentTime: DateTime(2008, 12, 31, 23, 12, 34),
-                      locale: 'zh');
+                  }, currentTime: DateTime(2008, 12, 31, 23, 12, 34), locale: LocaleType.zh);
                 },
                 child: Text(
                   'show date picker',
@@ -52,8 +49,7 @@ class HomePage extends StatelessWidget {
                 )),
             FlatButton(
                 onPressed: () {
-                  DatePicker.showTimePicker(context, showTitleActions: true,
-                      onChanged: (date) {
+                  DatePicker.showTimePicker(context, showTitleActions: true, onChanged: (date) {
                     print('change $date');
                   }, onConfirm: (date) {
                     print('confirm $date');
@@ -65,14 +61,11 @@ class HomePage extends StatelessWidget {
                 )),
             FlatButton(
                 onPressed: () {
-                  DatePicker.showDateTimePicker(context, showTitleActions: true,
-                      onChanged: (date) {
+                  DatePicker.showDateTimePicker(context, showTitleActions: true, onChanged: (date) {
                     print('change $date');
                   }, onConfirm: (date) {
                     print('confirm $date');
-                  },
-                      currentTime: DateTime(2008, 12, 31, 23, 12, 34),
-                      locale: 'zh');
+                  }, currentTime: DateTime(2008, 12, 31, 23, 12, 34), locale: LocaleType.zh);
                 },
                 child: Text(
                   'show date time picker (Chinese)',
@@ -80,8 +73,7 @@ class HomePage extends StatelessWidget {
                 )),
             FlatButton(
                 onPressed: () {
-                  DatePicker.showDateTimePicker(context, showTitleActions: true,
-                      onChanged: (date) {
+                  DatePicker.showDateTimePicker(context, showTitleActions: true, onChanged: (date) {
                     print('change $date');
                   }, onConfirm: (date) {
                     print('confirm $date');

+ 1 - 1
example/pubspec.lock

@@ -82,7 +82,7 @@ packages:
       path: ".."
       relative: true
     source: path
-    version: "1.0.1"
+    version: "1.0.2"
   flutter_test:
     dependency: "direct dev"
     description: flutter

+ 35 - 68
lib/flutter_datetime_picker.dart

@@ -2,9 +2,10 @@ library flutter_datetime_picker;
 
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
-import 'package:flutter_datetime_picker/src/dateModel.dart';
-
-export 'package:flutter_datetime_picker/src/dateModel.dart';
+import 'package:flutter_datetime_picker/src/date_model.dart';
+import 'package:flutter_datetime_picker/src/i18n_model.dart';
+export 'package:flutter_datetime_picker/src/date_model.dart';
+export 'package:flutter_datetime_picker/src/i18n_model.dart';
 
 typedef DateChangedCallback(DateTime time);
 typedef String StringAtIndexCallBack(int index);
@@ -22,7 +23,7 @@ class DatePicker {
       {bool showTitleActions: true,
       DateChangedCallback onChanged,
       DateChangedCallback onConfirm,
-      locale: 'en',
+      locale: LocaleType.en,
       DateTime currentTime}) {
     Navigator.push(
         context,
@@ -32,10 +33,8 @@ class DatePicker {
             onConfirm: onConfirm,
             locale: locale,
             theme: Theme.of(context, shadowThemeOnly: true),
-            barrierLabel:
-                MaterialLocalizations.of(context).modalBarrierDismissLabel,
-            pickerModel:
-                DatePickerModel(currentTime: currentTime, locale: locale)));
+            barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
+            pickerModel: DatePickerModel(currentTime: currentTime, locale: locale)));
   }
 
   ///
@@ -45,7 +44,7 @@ class DatePicker {
       {bool showTitleActions: true,
       DateChangedCallback onChanged,
       DateChangedCallback onConfirm,
-      locale: 'en',
+      locale: LocaleType.en,
       DateTime currentTime}) {
     Navigator.push(
         context,
@@ -55,10 +54,8 @@ class DatePicker {
             onConfirm: onConfirm,
             locale: locale,
             theme: Theme.of(context, shadowThemeOnly: true),
-            barrierLabel:
-                MaterialLocalizations.of(context).modalBarrierDismissLabel,
-            pickerModel:
-                TimePickerModel(currentTime: currentTime, locale: locale)));
+            barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
+            pickerModel: TimePickerModel(currentTime: currentTime, locale: locale)));
   }
 
   ///
@@ -68,7 +65,7 @@ class DatePicker {
       {bool showTitleActions: true,
       DateChangedCallback onChanged,
       DateChangedCallback onConfirm,
-      locale: 'en',
+      locale: LocaleType.en,
       DateTime currentTime}) {
     Navigator.push(
         context,
@@ -78,10 +75,8 @@ class DatePicker {
             onConfirm: onConfirm,
             locale: locale,
             theme: Theme.of(context, shadowThemeOnly: true),
-            barrierLabel:
-                MaterialLocalizations.of(context).modalBarrierDismissLabel,
-            pickerModel:
-                DateTimePickerModel(currentTime: currentTime, locale: locale)));
+            barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
+            pickerModel: DateTimePickerModel(currentTime: currentTime, locale: locale)));
   }
 
   ///
@@ -91,7 +86,7 @@ class DatePicker {
       {bool showTitleActions: true,
       DateChangedCallback onChanged,
       DateChangedCallback onConfirm,
-      locale: 'en',
+      locale: LocaleType.en,
       BasePickerModel pickerModel}) {
     Navigator.push(
         context,
@@ -101,8 +96,7 @@ class DatePicker {
             onConfirm: onConfirm,
             locale: locale,
             theme: Theme.of(context, shadowThemeOnly: true),
-            barrierLabel:
-                MaterialLocalizations.of(context).modalBarrierDismissLabel,
+            barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
             pickerModel: pickerModel));
   }
 }
@@ -124,7 +118,7 @@ class _DatePickerRoute<T> extends PopupRoute<T> {
   final DateChangedCallback onChanged;
   final DateChangedCallback onConfirm;
   final ThemeData theme;
-  final String locale;
+  final LocaleType locale;
   final BasePickerModel pickerModel;
 
   @override
@@ -144,14 +138,13 @@ class _DatePickerRoute<T> extends PopupRoute<T> {
   @override
   AnimationController createAnimationController() {
     assert(_animationController == null);
-    _animationController =
-        BottomSheet.createAnimationController(navigator.overlay);
+    _animationController = BottomSheet.createAnimationController(navigator.overlay);
     return _animationController;
   }
 
   @override
-  Widget buildPage(BuildContext context, Animation<double> animation,
-      Animation<double> secondaryAnimation) {
+  Widget buildPage(
+      BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
     Widget bottomSheet = new MediaQuery.removePadding(
       context: context,
       removeTop: true,
@@ -171,17 +164,13 @@ class _DatePickerRoute<T> extends PopupRoute<T> {
 
 class _DatePickerComponent extends StatefulWidget {
   _DatePickerComponent(
-      {Key key,
-      @required this.route,
-      this.onChanged,
-      this.locale,
-      this.pickerModel});
+      {Key key, @required this.route, this.onChanged, this.locale, this.pickerModel});
 
   final DateChangedCallback onChanged;
 
   final _DatePickerRoute route;
 
-  final String locale;
+  final LocaleType locale;
 
   final BasePickerModel pickerModel;
 
@@ -201,12 +190,12 @@ class _DatePickerState extends State<_DatePickerComponent> {
   }
 
   void refreshScrollOffset() {
-    leftScrollCtrl = new FixedExtentScrollController(
-        initialItem: widget.pickerModel.currentLeftIndex());
-    middleScrollCtrl = new FixedExtentScrollController(
-        initialItem: widget.pickerModel.currentMiddleIndex());
-    rightScrollCtrl = new FixedExtentScrollController(
-        initialItem: widget.pickerModel.currentRightIndex());
+    leftScrollCtrl =
+        new FixedExtentScrollController(initialItem: widget.pickerModel.currentLeftIndex());
+    middleScrollCtrl =
+        new FixedExtentScrollController(initialItem: widget.pickerModel.currentMiddleIndex());
+    rightScrollCtrl =
+        new FixedExtentScrollController(initialItem: widget.pickerModel.currentRightIndex());
   }
 
   @override
@@ -294,9 +283,7 @@ class _DatePickerState extends State<_DatePickerComponent> {
                       alignment: Alignment.center,
                       child: Text(
                         content,
-                        style: TextStyle(
-                            color: Color(0xFF000046),
-                            fontSize: _kDatePickerFontSize),
+                        style: TextStyle(color: Color(0xFF000046), fontSize: _kDatePickerFontSize),
                         textAlign: TextAlign.start,
                       ),
                     );
@@ -310,21 +297,16 @@ class _DatePickerState extends State<_DatePickerComponent> {
       child: Row(
         mainAxisAlignment: MainAxisAlignment.spaceBetween,
         children: <Widget>[
-          _renderColumnView(
-              widget.pickerModel.leftStringAtIndex,
-              leftScrollCtrl,
+          _renderColumnView(widget.pickerModel.leftStringAtIndex, leftScrollCtrl,
               widget.pickerModel.layoutProportions()[0], (index) {
             widget.pickerModel.setLeftIndex(index);
             _notifyDateChanged();
           }, null),
           Text(
             widget.pickerModel.leftDivider(),
-            style: TextStyle(
-                color: Color(0xFF000046), fontSize: _kDatePickerFontSize),
+            style: TextStyle(color: Color(0xFF000046), fontSize: _kDatePickerFontSize),
           ),
-          _renderColumnView(
-              widget.pickerModel.middleStringAtIndex,
-              middleScrollCtrl,
+          _renderColumnView(widget.pickerModel.middleStringAtIndex, middleScrollCtrl,
               widget.pickerModel.layoutProportions()[1], (index) {
             widget.pickerModel.setMiddleIndex(index);
           }, (index) {
@@ -334,12 +316,9 @@ class _DatePickerState extends State<_DatePickerComponent> {
           }),
           Text(
             widget.pickerModel.rightDivider(),
-            style: TextStyle(
-                color: Color(0xFF000046), fontSize: _kDatePickerFontSize),
+            style: TextStyle(color: Color(0xFF000046), fontSize: _kDatePickerFontSize),
           ),
-          _renderColumnView(
-              widget.pickerModel.rightStringAtIndex,
-              rightScrollCtrl,
+          _renderColumnView(widget.pickerModel.rightStringAtIndex, rightScrollCtrl,
               widget.pickerModel.layoutProportions()[2], (index) {
             widget.pickerModel.setRightIndex(index);
             _notifyDateChanged();
@@ -397,23 +376,11 @@ class _DatePickerState extends State<_DatePickerComponent> {
   }
 
   String _localeDone() {
-    if (widget.locale.matchAsPrefix('cn') != null) {
-      return '确定';
-    } else if (widget.locale.matchAsPrefix('nl') != null) {
-      return 'Klaar';
-    } else {
-      return 'Done';
-    }
+    return i18nObjInLocale(widget.locale)['done'];
   }
 
   String _localeCancel() {
-    if (widget.locale.matchAsPrefix('cn') != null) {
-      return '取消';
-    } else if (widget.locale.matchAsPrefix('nl') != null) {
-      return 'Annuleer';
-    } else {
-      return 'Cancel';
-    }
+    return i18nObjInLocale(widget.locale)['cancel'];
   }
 }
 

+ 17 - 183
lib/src/date_format.dart

@@ -1,3 +1,5 @@
+import 'i18n_model.dart';
+
 /// Outputs year as four digits
 ///
 /// Example:
@@ -91,13 +93,6 @@ const String WW = 'WW';
 ///     // => 8
 const String W = 'W';
 
-/// Outputs week day as long name
-///
-/// Example:
-///     formatDate(new DateTime(2018, 1, 14), [DD]);
-///     // => sunday
-const String DD = 'DD';
-
 /// Outputs week day as long name
 ///
 /// Example:
@@ -225,32 +220,24 @@ const String am = 'am';
 const String z = 'z';
 const String Z = 'Z';
 
-String formatDate(DateTime date, List<String> formats, String locale) {
+String formatDate(DateTime date, List<String> formats, LocaleType locale) {
   if (formats.first == ymdw) {
     final now = DateTime.now();
-    if (date.year == now.year &&
-        date.month == now.month &&
-        date.day == now.day) {
+    if (date.year == now.year && date.month == now.month && date.day == now.day) {
       //today
-      if (locale == 'zh') {
-        return '今天';
-      } else if (locale == 'nl') {
-        return 'Vandaag';
-      } else {
-        return 'Today';
-      }
+      return i18nObjInLocale(locale)['today'];
     } else if (date.year == now.year) {
-      if (locale == 'zh') {
+      if (locale == LocaleType.zh) {
         return formatDate(date, [mm, '月', dd, '日 ', D], locale);
-      } else if (locale == 'nl') {
+      } else if (locale == LocaleType.nl) {
         return formatDate(date, [D, ' ', dd, ' ', M], locale);
       } else {
         return formatDate(date, [D, ' ', M, ' ', dd], locale);
       }
     } else {
-      if (locale == 'zh') {
+      if (locale == LocaleType.zh) {
         return formatDate(date, [yyyy, '年', mm, '月', dd, '日 ', D], locale);
-      } else if (locale == 'nl') {
+      } else if (locale == LocaleType.nl) {
         return formatDate(date, [D, ' ', dd, ' ', M, ' ', yyyy], locale);
       } else {
         return formatDate(date, [D, ' ', M, ' ', dd, ',', yyyy], locale);
@@ -270,21 +257,11 @@ String formatDate(DateTime date, List<String> formats, String locale) {
     } else if (format == m) {
       sb.write(date.month);
     } else if (format == MM) {
-      if (locale == 'zh') {
-        sb.write(monthZH[date.month - 1]);
-      } else if (locale == 'nl') {
-        sb.write(monthLongNL[date.month - 1]);
-      } else {
-        sb.write(monthLong[date.month - 1]);
-      }
+      String monthLong = i18nObjInLocale(locale)['monthLong'][date.month - 1];
+      sb.write(monthLong);
     } else if (format == M) {
-      if (locale == 'zh') {
-        sb.write(monthZH[date.month - 1]);
-      } else if (locale == 'nl') {
-        sb.write(monthShortNL[date.month - 1]);
-      } else {
-        sb.write(monthShort[date.month - 1]);
-      }
+      String monthShort = i18nObjInLocale(locale)['monthShort'][date.month - 1];
+      sb.write(monthShort);
     } else if (format == dd) {
       sb.write(digits(date.day, 2));
     } else if (format == d) {
@@ -295,22 +272,9 @@ String formatDate(DateTime date, List<String> formats, String locale) {
       sb.write((dayInYear(date) + 7) ~/ 7);
     } else if (format == WW) {
       sb.write(digits((dayInYear(date) + 7) ~/ 7, 2));
-    } else if (format == DD) {
-      if (locale == 'zh') {
-        sb.write(dayZH[date.weekday - 1]);
-      } else if (locale == 'nl') {
-        sb.write(dayLongNL[date.weekday - 1]);
-      } else {
-        sb.write(dayLong[date.weekday - 1]);
-      }
     } else if (format == D) {
-      if (locale == 'zh') {
-        sb.write(dayZH[date.weekday - 1]);
-      } else if (locale == 'nl') {
-        sb.write(dayShortNL[date.weekday - 1]);
-      } else {
-        sb.write(dayShort[date.weekday - 1]);
-      }
+      String day = i18nObjInLocale(locale)['day'][date.weekday - 1];
+      sb.write(day);
     } else if (format == HH) {
       sb.write(digits(date.hour, 2));
     } else if (format == H) {
@@ -320,11 +284,7 @@ String formatDate(DateTime date, List<String> formats, String locale) {
     } else if (format == h) {
       sb.write(date.hour % 12);
     } else if (format == am) {
-      if (locale == 'zh') {
-        sb.write(date.hour < 12 ? '上午' : '下午');
-      } else {
-        sb.write(date.hour < 12 ? 'AM' : 'PM');
-      }
+      sb.write(date.hour < 12 ? i18nObjInLocale(locale)['am'] : i18nObjInLocale(locale)['pm']);
     } else if (format == nn) {
       sb.write(digits(date.minute, 2));
     } else if (format == n) {
@@ -373,130 +333,4 @@ String digits(int value, int length) {
   return ret;
 }
 
-const List<String> monthShort = const <String>[
-  'Jan',
-  'Feb',
-  'Mar',
-  'Apr',
-  'May',
-  'Jun',
-  'Jul',
-  'Aug',
-  'Sep',
-  'Oct',
-  'Nov',
-  'Dec'
-];
-
-const List<String> monthLong = const <String>[
-  'January',
-  'February',
-  'March',
-  'April',
-  'May',
-  'June',
-  'July',
-  'August',
-  'September',
-  'October',
-  'November',
-  'December'
-];
-
-const List<String> monthZH = const <String>[
-  '一月',
-  '二月',
-  '三月',
-  '四月',
-  '五月',
-  '六月',
-  '七月',
-  '八月',
-  '九月',
-  '十月',
-  '十一月',
-  '十二月'
-];
-
-const List<String> dayZH = const [
-  '星期一',
-  '星期二',
-  '星期三',
-  '星期四',
-  '星期五',
-  '星期六',
-  '星期日'
-];
-
-const List<String> dayShort = const [
-  'Mon',
-  'Tue',
-  'Wed',
-  'Thur',
-  'Fri',
-  'Sat',
-  'Sun'
-];
-
-const List<String> dayLong = const [
-  'Monday',
-  'Tuesday',
-  'Wednesday',
-  'Thursday',
-  'Friday',
-  'Saturday',
-  'Sunday'
-];
-
-const List<String> monthLongNL = const <String>[
-  'Januari',
-  'Februari',
-  'Maart',
-  'April',
-  'Mei',
-  'Juni',
-  'Juli',
-  'Augustus',
-  'September',
-  'Oktober',
-  'November',
-  'December',
-];
-
-const List<String> monthShortNL = const <String>[
-  'Jan',
-  'Feb',
-  'Mar',
-  'Apr',
-  'Mei',
-  'Jun',
-  'Jul',
-  'Aug',
-  'Sep',
-  'Okt',
-  'Nov',
-  'Dec',
-];
-
-const List<String> dayLongNL = const <String>[
-  'Maandag',
-  'Dinsdag',
-  'Woensdag',
-  'Donderdag',
-  'Vrijdag',
-  'Zaterdag',
-  'Zondag',
-];
-
-const List<String> dayShortNL = const <String>[
-  'Ma',
-  'Di',
-  'Wo',
-  'Do',
-  'Vr',
-  'Za',
-  'Zo',
-];
-
-int dayInYear(DateTime date) =>
-    date.difference(new DateTime(date.year, 1, 1)).inDays;
+int dayInYear(DateTime date) => date.difference(new DateTime(date.year, 1, 1)).inDays;

+ 14 - 21
lib/src/dateModel.dart → lib/src/date_model.dart

@@ -1,4 +1,5 @@
 import 'package:flutter_datetime_picker/src/date_format.dart';
+import 'package:flutter_datetime_picker/src/i18n_model.dart';
 
 abstract class BasePickerModel {
   String leftStringAtIndex(int index);
@@ -25,8 +26,8 @@ class CommonPickerModel extends BasePickerModel {
   int _currentMiddleIndex;
   int _currentRightIndex;
 
-  String locale;
-  CommonPickerModel({this.currentTime, locale}) : this.locale = locale ?? 'en';
+  LocaleType locale;
+  CommonPickerModel({this.currentTime, locale}) : this.locale = locale ?? LocaleType.en;
 
   @override
   String leftStringAtIndex(int index) {
@@ -112,10 +113,7 @@ class DatePickerModel extends CommonPickerModel {
   }
 
   DatePickerModel(
-      {this.maxYear = 2050,
-      this.minYear = 1970,
-      DateTime currentTime,
-      String locale})
+      {this.maxYear = 2050, this.minYear = 1970, DateTime currentTime, LocaleType locale})
       : super(locale: locale) {
     if (currentTime != null) {
       int year = currentTime.year;
@@ -149,8 +147,7 @@ class DatePickerModel extends CommonPickerModel {
 
   void fillRightLists() {
     this.rightList = List.generate(
-        _calcDateCount(_currentLeftIndex + minYear, _currentMiddleIndex + 1),
-        (int index) {
+        _calcDateCount(_currentLeftIndex + minYear, _currentMiddleIndex + 1), (int index) {
       return '${index + 1}${_localeDay()}';
     });
   }
@@ -165,8 +162,7 @@ class DatePickerModel extends CommonPickerModel {
   void setMiddleIndex(int index) {
     _currentMiddleIndex = index;
     fillRightLists();
-    final dayCount =
-        _calcDateCount(_currentLeftIndex + minYear, _currentMiddleIndex + 1);
+    final dayCount = _calcDateCount(_currentLeftIndex + minYear, _currentMiddleIndex + 1);
     if (_currentRightIndex >= dayCount) {
       _currentRightIndex = dayCount;
     }
@@ -205,7 +201,7 @@ class DatePickerModel extends CommonPickerModel {
   }
 
   String _localeYear() {
-    if (locale.matchAsPrefix('zh') != null) {
+    if (locale == LocaleType.zh) {
       return '年';
     } else {
       return '';
@@ -213,7 +209,7 @@ class DatePickerModel extends CommonPickerModel {
   }
 
   String _localeMonth() {
-    if (locale.matchAsPrefix('zh') != null) {
+    if (locale == LocaleType.zh) {
       return '月';
     } else {
       return '';
@@ -221,7 +217,7 @@ class DatePickerModel extends CommonPickerModel {
   }
 
   String _localeDay() {
-    if (locale.matchAsPrefix('zh') != null) {
+    if (locale == LocaleType.zh) {
       return '日';
     } else {
       return '';
@@ -238,8 +234,7 @@ class DatePickerModel extends CommonPickerModel {
 }
 
 class TimePickerModel extends CommonPickerModel {
-  TimePickerModel({DateTime currentTime, String locale})
-      : super(locale: locale) {
+  TimePickerModel({DateTime currentTime, LocaleType locale}) : super(locale: locale) {
     this.currentTime = currentTime ?? DateTime.now();
     _currentLeftIndex = this.currentTime.hour;
     _currentMiddleIndex = this.currentTime.minute;
@@ -285,14 +280,13 @@ class TimePickerModel extends CommonPickerModel {
 
   @override
   DateTime finalTime() {
-    return DateTime(currentTime.year, currentTime.month, currentTime.day,
-        _currentLeftIndex, _currentMiddleIndex, _currentRightIndex);
+    return DateTime(currentTime.year, currentTime.month, currentTime.day, _currentLeftIndex,
+        _currentMiddleIndex, _currentRightIndex);
   }
 }
 
 class DateTimePickerModel extends CommonPickerModel {
-  DateTimePickerModel({DateTime currentTime, String locale})
-      : super(locale: locale) {
+  DateTimePickerModel({DateTime currentTime, LocaleType locale}) : super(locale: locale) {
     this.currentTime = currentTime ?? DateTime.now();
     _currentLeftIndex = 0;
     _currentMiddleIndex = this.currentTime.hour;
@@ -326,8 +320,7 @@ class DateTimePickerModel extends CommonPickerModel {
   @override
   DateTime finalTime() {
     DateTime time = currentTime.add(Duration(days: _currentLeftIndex));
-    return DateTime(time.year, time.month, time.day, _currentMiddleIndex,
-        _currentRightIndex);
+    return DateTime(time.year, time.month, time.day, _currentMiddleIndex, _currentRightIndex);
   }
 
   @override

+ 111 - 0
lib/src/i18n_model.dart

@@ -0,0 +1,111 @@
+enum LocaleType {
+  zh,
+  nl,
+  en,
+}
+final _i18nModel = {
+  'en': {
+    //default
+    'cancel': 'Cancel',
+    'done': 'Done',
+    'today': 'Today',
+    'monthShort': [
+      'Jan',
+      'Feb',
+      'Mar',
+      'Apr',
+      'May',
+      'Jun',
+      'Jul',
+      'Aug',
+      'Sep',
+      'Oct',
+      'Nov',
+      'Dec'
+    ],
+    'monthLong': [
+      'January',
+      'February',
+      'March',
+      'April',
+      'May',
+      'June',
+      'July',
+      'August',
+      'September',
+      'October',
+      'November',
+      'December'
+    ],
+    'day': ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun'],
+    'am': 'AM',
+    'pm': 'PM'
+  },
+  'zh': {
+    //Chinese
+    'cancel': '取消',
+    'done': '确定',
+    'today': '今天',
+    'monthShort': ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'monthLong': ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
+    'day': ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'],
+    'am': '上午',
+    'pm': '下午'
+  },
+  'nl': {
+    //Dutch
+    'cancel': 'Annuleer',
+    'done': 'Klaar',
+    'today': 'Vandaag',
+    'monthShort': [
+      'Jan',
+      'Feb',
+      'Mar',
+      'Apr',
+      'Mei',
+      'Jun',
+      'Jul',
+      'Aug',
+      'Sep',
+      'Okt',
+      'Nov',
+      'Dec',
+    ],
+    'monthLong': [
+      'Januari',
+      'Februari',
+      'Maart',
+      'April',
+      'Mei',
+      'Juni',
+      'Juli',
+      'Augustus',
+      'September',
+      'Oktober',
+      'November',
+      'December',
+    ],
+    'day': [
+      'Ma',
+      'Di',
+      'Wo',
+      'Do',
+      'Vr',
+      'Za',
+      'Zo',
+    ],
+    'am': 'AM',
+    'pm': 'PM'
+  }
+};
+
+Map<String, dynamic> i18nObjInLocale(LocaleType type) {
+  switch (type) {
+    case LocaleType.zh:
+      return _i18nModel['zh'];
+    case LocaleType.nl:
+      return _i18nModel['nl'];
+    default:
+      return _i18nModel['en'];
+  }
+}