Skip to content

Commit b612bf4

Browse files
Moved the new sample changes
1 parent 7005e22 commit b612bf4

File tree

488 files changed

+74986
-8487
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

488 files changed

+74986
-8487
lines changed

README.md

+2-5
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,12 @@ Explore the full capabilities of our Flutter widgets on your device by installin
8282

8383
<p align="center">
8484
<a href="https://play.google.com/store/apps/details?id=com.syncfusion.flutter.examples"><img src="https://cdn.syncfusion.com/content/images/FTControl/google-play-store.png"/></a>
85-
<a href="https://apps.apple.com/us/app/syncfusion-flutter-ui-widgets/id1475231341"><img src="https://cdn.syncfusion.com/content/images/FTControl/ios-store.png"/></a>
86-
<a href="https://flutter.syncfusion.com"><img src="https://cdn.syncfusion.com/content/images/FTControl/web-sample-browser.png"/></a>
85+
<a href="https://flutter.syncfusion.com"><img src="https://cdn.syncfusion.com/content/images/FTControl/web-sample-browser.png"/></a>
86+
<a href="https://www.microsoft.com/en-us/p/syncfusion-flutter-gallery/9nhnbwcsf85d?activetab=pivot:overviewtab"><img src="https://cdn.syncfusion.com/content/images/FTControl/windows-store.png"/></a>
8787
</p>
8888
<p align="center">
89-
<a href="https://www.microsoft.com/en-us/p/syncfusion-flutter-gallery/9nhnbwcsf85d?activetab=pivot:overviewtab"><img src="https://cdn.syncfusion.com/content/images/FTControl/windows-store.png"/></a>
9089
<a href="https://install.appcenter.ms/orgs/syncfusion-demos/apps/syncfusion-flutter-gallery/distribution_groups/release"><img src="https://cdn.syncfusion.com/content/images/FTControl/macos-app-center.png"/></a>
9190
<a href="https://snapcraft.io/syncfusion-flutter-gallery"><img src="https://cdn.syncfusion.com/content/images/FTControl/snap-store.png"/></a>
92-
</p>
93-
<p align="center">
9491
<a href="https://github.com/syncfusion/flutter-examples"><img src="https://cdn.syncfusion.com/content/images/FTControl/github-samples.png"/></a>
9592
</p>
9693

analysis_options.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ analyzer:
1010
avoid_bool_literals_in_conditional_expressions: ignore
1111
library_private_types_in_public_api: ignore
1212
prefer_interpolation_to_compose_strings: ignore
13+
always_specify_types: ignore
14+

assets/europe.json

+54,610-52
Large diffs are not rendered by default.

assets/germany.json

+23
Large diffs are not rendered by default.

assets/pdf/annotations.pdf

80.7 KB
Binary file not shown.

assets/pdf/form_document.pdf

63.8 KB
Binary file not shown.

assets/pdf/rtl_document.pdf

846 KB
Binary file not shown.

build/flutter_assets/lib/sample_details.json

+21-2
Original file line numberDiff line numberDiff line change
@@ -2600,6 +2600,26 @@
26002600
}
26012601
]
26022602
},
2603+
{
2604+
"type": "child",
2605+
"title": "Grouping",
2606+
"subItems": [
2607+
{
2608+
"type": "sample",
2609+
"title": "Grouping",
2610+
"key": "datagrid_grouping",
2611+
"codeLink": "https://github.com/syncfusion/flutter-examples/blob/master/lib/samples/datagrid/grouping/datagrid_grouping.dart",
2612+
"needsPropertyPanel": false
2613+
},
2614+
{
2615+
"type": "sample",
2616+
"title": "Custom Grouping",
2617+
"key": "datagrid_custom_grouping",
2618+
"codeLink": "https://github.com/syncfusion/flutter-examples/blob/master/lib/samples/datagrid/grouping/datagrid_custom_grouping",
2619+
"needsPropertyPanel": false
2620+
}
2621+
]
2622+
},
26032623
{
26042624
"type": "child",
26052625
"title": "Selection",
@@ -2627,7 +2647,6 @@
26272647
}
26282648
]
26292649
},
2630-
26312650
{
26322651
"type": "child",
26332652
"title": "Freeze Panes",
@@ -3610,4 +3629,4 @@
36103629
}
36113630
]
36123631
}
3613-
]
3632+
]

images/cartesian_types.png

-85 KB
Loading

images/circle_gauge.png

11.8 KB
Loading

images/circle_series.png

-22.1 KB
Loading

images/circular_progress_bar.png

3.07 KB
Loading

images/pdf_viewer/color_palette.png

1.78 KB
Loading

images/pdf_viewer/delete.png

407 Bytes
Loading
895 Bytes
Loading

images/pdf_viewer/highlight.png

1.21 KB
Loading
898 Bytes
Loading

images/pdf_viewer/locked.png

846 Bytes
Loading

images/pdf_viewer/opacity.png

297 Bytes
Loading

images/pdf_viewer/save.png

930 Bytes
Loading

images/pdf_viewer/squiggly.png

780 Bytes
Loading

images/pdf_viewer/strikethrough.png

929 Bytes
Loading

images/pdf_viewer/text_markup.png

240 Bytes
Loading

images/pdf_viewer/underline.png

540 Bytes
Loading

images/pdf_viewer/unlocked.png

851 Bytes
Loading

images/radial_range_slider.png

2.74 KB
Loading

images/radial_slider.png

2.81 KB
Loading

lib/model/helper.dart

+166-149
Large diffs are not rendered by default.

lib/model/mobile_view.dart

+123-67
Large diffs are not rendered by default.

lib/model/model.dart

+110-101
Large diffs are not rendered by default.

lib/model/sample_view.dart

+217-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
/// Package import
22
import 'package:flutter/material.dart';
3+
import 'package:flutter_localizations/flutter_localizations.dart';
4+
import 'package:syncfusion_localizations/syncfusion_localizations.dart';
35

46
/// Local import
57
import 'model.dart';
@@ -11,7 +13,7 @@ abstract class SampleView extends StatefulWidget {
1113
}
1214

1315
/// Base class of the sample's state class
14-
abstract class SampleViewState extends State<SampleView> {
16+
abstract class SampleViewState<T extends SampleView> extends State<T> {
1517
/// Holds the SampleModel information
1618
late SampleModel model;
1719

@@ -25,9 +27,8 @@ abstract class SampleViewState extends State<SampleView> {
2527
super.initState();
2628
}
2729

28-
@override
29-
3030
/// Must call super.
31+
@override
3132
void dispose() {
3233
model.isCardView = true;
3334
super.dispose();
@@ -39,6 +40,219 @@ abstract class SampleViewState extends State<SampleView> {
3940
}
4041
}
4142

43+
/// Base class of the localization sample's stateful widget class
44+
class LocalizationSampleView extends SampleView {
45+
/// base class constructor of sample's stateful widget class
46+
const LocalizationSampleView({Key? key}) : super(key: key);
47+
48+
@override
49+
State<StatefulWidget> createState() => LocalizationSampleViewState();
50+
}
51+
52+
/// Base class of the localization sample's state class
53+
class LocalizationSampleViewState<T extends LocalizationSampleView>
54+
extends SampleViewState<T> {
55+
late List<Locale> _supportedLocales;
56+
57+
@override
58+
void initState() {
59+
if (this is! DirectionalitySampleViewState) {
60+
_supportedLocales = <Locale>[
61+
const Locale('ar', 'AE'),
62+
const Locale('en', 'US'),
63+
const Locale('es', 'ES'),
64+
const Locale('fr', 'FR'),
65+
const Locale('zh', 'CN')
66+
];
67+
} else {
68+
_supportedLocales = <Locale>[
69+
const Locale('ar', 'AE'),
70+
const Locale('en', 'US'),
71+
];
72+
}
73+
74+
super.initState();
75+
}
76+
77+
/// Add the localization selection widget.
78+
Widget localizationSelectorWidget(BuildContext context) {
79+
final double screenWidth =
80+
model.isWebFullView ? 250 : MediaQuery.of(context).size.width;
81+
final double dropDownWidth = 0.6 * screenWidth;
82+
return StatefulBuilder(
83+
builder: (BuildContext context, StateSetter stateSetter) {
84+
return Row(
85+
children: <Widget>[
86+
Text(this is DirectionalitySampleViewState ? 'Language' : 'Locale',
87+
softWrap: false,
88+
style: TextStyle(
89+
fontSize: 16,
90+
color: model.textColor,
91+
)),
92+
Container(
93+
padding: const EdgeInsets.fromLTRB(50, 0, 0, 0),
94+
width: dropDownWidth,
95+
child: DropdownButton<Locale>(
96+
focusColor: Colors.transparent,
97+
isExpanded: true,
98+
underline:
99+
Container(color: const Color(0xFFBDBDBD), height: 1),
100+
value: model.locale,
101+
items: _supportedLocales.map((Locale value) {
102+
String localeString = value.toString();
103+
if (this is DirectionalitySampleViewState) {
104+
localeString =
105+
(localeString == 'ar_AE') ? 'Arabic' : 'English';
106+
} else {
107+
localeString = localeString.substring(0, 2) +
108+
'-' +
109+
localeString.substring(3, 5);
110+
}
111+
112+
return DropdownMenuItem<Locale>(
113+
value: value,
114+
child: Text(localeString,
115+
style: TextStyle(color: model.textColor)));
116+
}).toList(),
117+
onChanged: (Locale? value) {
118+
if (model.locale != value) {
119+
setState(() {
120+
stateSetter(() {
121+
model.isInitialRender = false;
122+
model.locale = value;
123+
if (this is! DirectionalitySampleViewState) {
124+
if (model.locale == const Locale('ar', 'AE')) {
125+
model.textDirection = TextDirection.rtl;
126+
} else {
127+
model.textDirection = TextDirection.ltr;
128+
}
129+
}
130+
});
131+
});
132+
}
133+
})),
134+
],
135+
);
136+
});
137+
}
138+
139+
Widget _buildDirectionalityWidget() {
140+
return Localizations(
141+
locale: model.locale!,
142+
delegates: const [
143+
GlobalMaterialLocalizations.delegate,
144+
GlobalWidgetsLocalizations.delegate,
145+
GlobalCupertinoLocalizations.delegate,
146+
SfGlobalLocalizations.delegate
147+
],
148+
child: Directionality(
149+
textDirection: model.textDirection,
150+
child: buildSample(context) ?? Container()));
151+
}
152+
153+
/// Method to get the widget's color based on the widget state
154+
Color? getColor(Set<MaterialState> states) {
155+
const Set<MaterialState> interactiveStates = <MaterialState>{
156+
MaterialState.pressed,
157+
MaterialState.selected,
158+
};
159+
if (states.any(interactiveStates.contains)) {
160+
return model.backgroundColor;
161+
}
162+
return null;
163+
}
164+
165+
@override
166+
Widget build(BuildContext context) {
167+
return _buildDirectionalityWidget();
168+
}
169+
170+
/// Get the settings panel content.
171+
Widget? buildSample(BuildContext context) {
172+
return null;
173+
}
174+
175+
/// Must call super.
176+
@override
177+
void dispose() {
178+
super.dispose();
179+
}
180+
}
181+
182+
/// Base class of the directionality sample's stateful widget class
183+
class DirectionalitySampleView extends LocalizationSampleView {
184+
/// base class constructor of sample's stateful widget class
185+
const DirectionalitySampleView({Key? key}) : super(key: key);
186+
}
187+
188+
/// Base class of the directionality sample's state class
189+
class DirectionalitySampleViewState<T extends DirectionalitySampleView>
190+
extends LocalizationSampleViewState<T> {
191+
final List<TextDirection> _supportedTextDirection = <TextDirection>[
192+
TextDirection.ltr,
193+
TextDirection.rtl,
194+
];
195+
196+
/// Must call super.
197+
@override
198+
void dispose() {
199+
super.dispose();
200+
}
201+
202+
/// Close all overlay when property panel is opened. Implemented for PdfViewer
203+
/// RTL sample.
204+
void closeAllOverlay() {}
205+
206+
/// Add the localization selection widget.
207+
Widget textDirectionSelectorWidget(BuildContext context) {
208+
final double screenWidth =
209+
model.isWebFullView ? 250 : MediaQuery.of(context).size.width;
210+
closeAllOverlay();
211+
final double dropDownWidth = 0.6 * screenWidth;
212+
return StatefulBuilder(
213+
builder: (BuildContext context, StateSetter stateSetter) {
214+
return Row(
215+
children: <Widget>[
216+
Text('Rendering\nDirection',
217+
maxLines: 2,
218+
textAlign: TextAlign.left,
219+
softWrap: false,
220+
style: TextStyle(
221+
fontSize: 16,
222+
color: model.textColor,
223+
)),
224+
Container(
225+
padding: const EdgeInsets.fromLTRB(50, 0, 0, 0),
226+
width: dropDownWidth,
227+
child: DropdownButton<TextDirection>(
228+
focusColor: Colors.transparent,
229+
isExpanded: true,
230+
underline:
231+
Container(color: const Color(0xFFBDBDBD), height: 1),
232+
value: model.textDirection,
233+
items: _supportedTextDirection.map((TextDirection value) {
234+
return DropdownMenuItem<TextDirection>(
235+
value: value,
236+
child: Text(
237+
value.toString().split('.')[1].toUpperCase(),
238+
style: TextStyle(color: model.textColor)));
239+
}).toList(),
240+
onChanged: (TextDirection? value) {
241+
if (model.textDirection != value) {
242+
setState(() {
243+
stateSetter(() {
244+
model.isInitialRender = false;
245+
model.textDirection = value!;
246+
});
247+
});
248+
}
249+
})),
250+
],
251+
);
252+
});
253+
}
254+
}
255+
42256
///Chart sample data
43257
class ChartSampleData {
44258
/// Holds the datapoint values like x, y, etc.,

0 commit comments

Comments
 (0)