Committed by
GitHub
Update README.zh-cn.md
update to english version
Showing
1 changed file
with
168 additions
and
0 deletions
@@ -37,6 +37,17 @@ _语言: 中文, [英文](README.md), [越南文](README-vi.md), [印度尼西 | @@ -37,6 +37,17 @@ _语言: 中文, [英文](README.md), [越南文](README-vi.md), [印度尼西 | ||
37 | - [改变语言](#改变语言) | 37 | - [改变语言](#改变语言) |
38 | - [系统语言](#系统语言) | 38 | - [系统语言](#系统语言) |
39 | - [改变主题](#改变主题) | 39 | - [改变主题](#改变主题) |
40 | + - [GetConnect](#getconnect) | ||
41 | + - [默认配置](#默认配置) | ||
42 | + - [自定义配置](#自定义配置) | ||
43 | + - [GetPage 中间件](#getpage-中间件) | ||
44 | + - [优先级](#优先级) | ||
45 | + - [Redirect](#redirect) | ||
46 | + - [onPageCalled](#onpagecalled) | ||
47 | + - [OnBindingsStart](#onbindingsstart) | ||
48 | + - [OnPageBuildStart](#onpagebuildstart) | ||
49 | + - [OnPageBuilt](#onpagebuilt) | ||
50 | + - [OnPageDispose](#onpagedispose) | ||
40 | - [其他高级API](#其他高级api) | 51 | - [其他高级API](#其他高级api) |
41 | - [可选的全局设置和手动配置](#可选的全局设置和手动配置) | 52 | - [可选的全局设置和手动配置](#可选的全局设置和手动配置) |
42 | - [局部状态组件](#局部状态组件) | 53 | - [局部状态组件](#局部状态组件) |
@@ -394,6 +405,163 @@ Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark()); | @@ -394,6 +405,163 @@ Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark()); | ||
394 | 405 | ||
395 | 当`.darkmode`被激活时,它将切换到light主题,当light主题被激活时,它将切换到dark主题。 | 406 | 当`.darkmode`被激活时,它将切换到light主题,当light主题被激活时,它将切换到dark主题。 |
396 | 407 | ||
408 | +## GetConnect | ||
409 | + | ||
410 | +GetConnect可以便捷的通过http或websockets进行前后台通信。 | ||
411 | + | ||
412 | +### 默认配置 | ||
413 | + | ||
414 | +你能轻松的通过extend GetConnect就能使用GET/POST/PUT/DELETE/SOCKET方法与你的Rest API或websockets通信。 | ||
415 | + | ||
416 | +```dart | ||
417 | +class UserProvider extends GetConnect { | ||
418 | + // Get request | ||
419 | + Future<Response> getUser(int id) => get('http://youapi/users/$id'); | ||
420 | + // Post request | ||
421 | + Future<Response> postUser(Map data) => post('http://youapi/users', body: data); | ||
422 | + // Post request with File | ||
423 | + Future<Response<CasesModel>> postCases(List<int> image) { | ||
424 | + final form = FormData({ | ||
425 | + 'file': MultipartFile(image, filename: 'avatar.png'), | ||
426 | + 'otherFile': MultipartFile(image, filename: 'cover.png'), | ||
427 | + }); | ||
428 | + return post('http://youapi/users/upload', form); | ||
429 | + } | ||
430 | + | ||
431 | + GetSocket userMessages() { | ||
432 | + return socket('https://yourapi/users/socket'); | ||
433 | + } | ||
434 | +} | ||
435 | +``` | ||
436 | + | ||
437 | +### 自定义配置 | ||
438 | + | ||
439 | +GetConnect具有多种自定义配置。你可以配置base Url,配置响应,配置请求,添加权限验证,甚至是尝试认证的次数,除此之外,还可以定义一个标准的解码器,该解码器将把您的所有请求转换为您的模型,而不需要任何额外的配置。 | ||
440 | + | ||
441 | +```dart | ||
442 | +class HomeProvider extends GetConnect { | ||
443 | + @override | ||
444 | + void onInit() { | ||
445 | + // All request will pass to jsonEncode so CasesModel.fromJson() | ||
446 | + httpClient.defaultDecoder = CasesModel.fromJson; | ||
447 | + httpClient.baseUrl = 'https://api.covid19api.com'; | ||
448 | + // baseUrl = 'https://api.covid19api.com'; // It define baseUrl to | ||
449 | + // Http and websockets if used with no [httpClient] instance | ||
450 | + | ||
451 | + // It's will attach 'apikey' property on header from all requests | ||
452 | + httpClient.addRequestModifier((request) { | ||
453 | + request.headers['apikey'] = '12345678'; | ||
454 | + return request; | ||
455 | + }); | ||
456 | + | ||
457 | + // Even if the server sends data from the country "Brazil", | ||
458 | + // it will never be displayed to users, because you remove | ||
459 | + // that data from the response, even before the response is delivered | ||
460 | + httpClient.addResponseModifier<CasesModel>((request, response) { | ||
461 | + CasesModel model = response.body; | ||
462 | + if (model.countries.contains('Brazil')) { | ||
463 | + model.countries.remove('Brazilll'); | ||
464 | + } | ||
465 | + }); | ||
466 | + | ||
467 | + httpClient.addAuthenticator((request) async { | ||
468 | + final response = await get("http://yourapi/token"); | ||
469 | + final token = response.body['token']; | ||
470 | + // Set the header | ||
471 | + request.headers['Authorization'] = "$token"; | ||
472 | + return request; | ||
473 | + }); | ||
474 | + | ||
475 | + //Autenticator will be called 3 times if HttpStatus is | ||
476 | + //HttpStatus.unauthorized | ||
477 | + httpClient.maxAuthRetries = 3; | ||
478 | + } | ||
479 | + } | ||
480 | + | ||
481 | + @override | ||
482 | + Future<Response<CasesModel>> getCases(String path) => get(path); | ||
483 | +} | ||
484 | +``` | ||
485 | + | ||
486 | +## GetPage 中间件 | ||
487 | + | ||
488 | +GetPage现在有个新的参数可以把列表中的Get中间件按指定顺序执行。 | ||
489 | + | ||
490 | +**注意**: 当GetPage有中间件时,所有的子page会自动有相同的中间件。 | ||
491 | + | ||
492 | +### 优先级 | ||
493 | + | ||
494 | +设置中间件的优先级定义Get中间件的执行顺序。 | ||
495 | + | ||
496 | +```dart | ||
497 | +final middlewares = [ | ||
498 | + GetMiddleware(priority: 2), | ||
499 | + GetMiddleware(priority: 5), | ||
500 | + GetMiddleware(priority: 4), | ||
501 | + GetMiddleware(priority: -8), | ||
502 | +]; | ||
503 | +``` | ||
504 | + | ||
505 | +这些中间件会按这个顺序执行 **-8 => 2 => 4 => 5** | ||
506 | + | ||
507 | +### Redirect | ||
508 | + | ||
509 | +当被调用路由的页面被搜索时,这个函数将被调用。它将RouteSettings作为重定向的结果。或者给它null,就没有重定向了。 | ||
510 | + | ||
511 | +```dart | ||
512 | +RouteSettings redirect(String route) { | ||
513 | + final authService = Get.find<AuthService>(); | ||
514 | + return authService.authed.value ? null : RouteSettings(name: '/login') | ||
515 | +} | ||
516 | +``` | ||
517 | + | ||
518 | +### onPageCalled | ||
519 | + | ||
520 | +在调用页面时,创建任何东西之前,这个函数会先被调用。 | ||
521 | +您可以使用它来更改页面的某些内容或给它一个新页面。 | ||
522 | + | ||
523 | +```dart | ||
524 | +GetPage onPageCalled(GetPage page) { | ||
525 | + final authService = Get.find<AuthService>(); | ||
526 | + return page.copyWith(title: 'Welcome ${authService.UserName}'); | ||
527 | +} | ||
528 | +``` | ||
529 | + | ||
530 | +### OnBindingsStart | ||
531 | + | ||
532 | +这个函数将在绑定初始化之前被调用。 | ||
533 | +在这里,您可以更改此页面的绑定。 | ||
534 | + | ||
535 | +```dart | ||
536 | +List<Bindings> onBindingsStart(List<Bindings> bindings) { | ||
537 | + final authService = Get.find<AuthService>(); | ||
538 | + if (authService.isAdmin) { | ||
539 | + bindings.add(AdminBinding()); | ||
540 | + } | ||
541 | + return bindings; | ||
542 | +} | ||
543 | +``` | ||
544 | + | ||
545 | +### OnPageBuildStart | ||
546 | + | ||
547 | +这个函数将在绑定初始化之后被调用。 | ||
548 | +在这里,您可以在创建绑定之后和创建页面widget之前执行一些操作。 | ||
549 | + | ||
550 | +```dart | ||
551 | +GetPageBuilder onPageBuildStart(GetPageBuilder page) { | ||
552 | + print('bindings are ready'); | ||
553 | + return page; | ||
554 | +} | ||
555 | +``` | ||
556 | + | ||
557 | +### OnPageBuilt | ||
558 | + | ||
559 | +这个函数将在GetPage.page调用后被调用,并给出函数的结果,并获取将要显示的widget。 | ||
560 | + | ||
561 | +### OnPageDispose | ||
562 | + | ||
563 | +这个函数将在处理完页面的所有相关对象(Controllers, views, ...)之后被调用。 | ||
564 | + | ||
397 | ## 其他高级API | 565 | ## 其他高级API |
398 | 566 | ||
399 | ```dart | 567 | ```dart |
-
Please register or login to post a comment